[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개의 댓글