[UnitTest] 1. 간단한 UnitTest 작성해보기

miori·2022년 5월 21일
0

ios with test

목록 보기
3/3

SweatLife 처럼 UnitTestLife 를 즐겨보자구

이 글은 야곰닷넷의 코스 UnitTest 작성하기를 공부하며, 정리한 글 입니다.
야곰닷넷 UnitTest 코스를 참고하였습니다.

테스트할 프로젝트

우선 테스트할 프로젝트에 대해 소개하겠다.

숫자 맞추기 게임이다.
랜덤으로 정해진 숫자를 맞추면 되고, 기회는 5번이 주어진다.
사용자가 추측한 숫자가 랜덤숫자보다 작거나 클때는 그에 맞게 숫자 범위를 수정해주면 된다.

테스트할 로직 함수

- compareValue 함수

이앱의 주 기능을 담당하는 compareValue 함수이다.

    func compareValue(with hitNumber: Int) -> HitResult {
        if tryCount >= 5 {
           return .Lose
        } else if randomValue == hitNumber {
            return .Win
        } else if hitNumber > randomValue {
            return .Down
        } else {
            return .Up
        }
    }

조건에 따라 4가지의 결과가 나온다.
이를 각각 테스트 해볼것이다.

- 테스트 코드

   func test_compareValue_tryCount가5이고_hitNumber이_randomValue와다를때_Lose반환하는지() {
        //given
        let hitNumber = 9
        sut.randomValue = 3
        sut.tryCount = 5
        //when
        let result = sut.compareValue(with: hitNumber)
        //then
        XCTAssertEqual(result, .Lose)
    }
    func test_compareVaule_hitNumber가_randomValue랑같을때_Win반환하는지() {
        //given
        let hitNumber = 7
        sut.randomValue = 7
        //when
        let result = sut.compareValue(with: hitNumber)
        //then
        XCTAssertEqual(result, .Win)
    }
    func test_compareValue_hitNumber가_randomVaule보다_클때_down반환하는지 () {
        //given
        let hitNumber = 9
        sut.randomValue = 7
        //when
        let result = sut.compareValue(with: hitNumber)
        //then
        XCTAssertEqual(result, .Down)
    }
    func test_compareValue_hitNumber가_randomVaule보다_작을때_up반환하는지 () {
        //given
        let hitNumber = 5
        sut.randomValue = 7
        //when
        let result = sut.compareValue(with: hitNumber)
        //then
        XCTAssertEqual(result, .Up)
    }

UnitTest 결과, 다 성공적으로 테스트를 통과했다.

UnitTest를 처음 들었을땐 어렵고 막막했다.
하지만 막상 배워보니, 훨씬 효율적인것 같다. 왜냐하면 다양한 경우들로 테스트코드를 작성하는 과정이 시뮬레이터로 확인하는 과정보다 훨씬 빠르게 할 수 있기 때문이다.

아직 UnitTest의 맛만 보는 정도지만, 더 공부하다 보면 TDD의 장점도 몸소 느낄 수 있지 않을까 싶다.

profile
iS를 공부하는 miori 입니다.

0개의 댓글