SweatLife 처럼 UnitTestLife 를 즐겨보자구
이 글은 야곰닷넷의 코스 UnitTest 작성하기를 공부하며, 정리한 글 입니다.
야곰닷넷 UnitTest 코스를 참고하였습니다.
우선 테스트할 프로젝트에 대해 소개하겠다.
숫자 맞추기 게임이다.
랜덤으로 정해진 숫자를 맞추면 되고, 기회는 5번이 주어진다.
사용자가 추측한 숫자가 랜덤숫자보다 작거나 클때는 그에 맞게 숫자 범위를 수정해주면 된다.
이앱의 주 기능을 담당하는 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의 맛만 보는 정도지만, 더 공부하다 보면 TDD의 장점도 몸소 느낄 수 있지 않을까 싶다.