Unit Test 간단하게 사용하기

작성일

Unit Testfks?

  • 소스 코드에서 특정 모듈, 클래스가 개발자가 의도한 대로 정확하게 작동하는지 테스트 하는 과정이다. 즉, 모든 함수나 메소드에 대한 테스트 케이스를 작성하는 과정이다.

사용법

프로젝트를 만들어줄대, Include Tests를 체크해준다.
image 그러면 이러한 파일 구조가 생길것이다.
오늘은 맨위 Unit_Test_StudyTests만 볼것이다.

import XCTest
@testable import Unit_Test_Study

final class Unit_Test_StudyTests: XCTestCase {

    // 초기화 코드를 작성하는 함수로 클래스의 각 테스트 함수의 호출 전에 호출되는 함수
    override func setUpWithError() throws {

    }

    // 해체 코드를 작성하는 함수로 각 테스트 함수의 호출 후에 호출되는 함수
    override func tearDownWithError() throws {

    }

    // 테스트 케이스를 작성하는 함수로 테스트가 올바른 결과를 생성하는지 확인하는 함수
    func testExample() throws {

    }

    // 성능 테스트 케이스를 작성하는 함수로 시간을 측정하는 코드를 작성하는 함수
    func testPerformanceExample() throws {

        }
    }
}

우선, 전체 코드에 주석처리를 해놨으니 필요한대로 사용하면 된다.
간단한 테스트를 해본다면,

struct Even {
  let number: Int
  var isEven: Bool {
    get {
      return number % 2 == 0
    }
  }
}

이런 간단한 구조체를 정의해 준후,

import XCTest
@testable import Unit_Test_Study

final class Unit_Test_StudyTests: XCTestCase {

    // 초기화 코드를 작성하는 함수로 클래스의 각 테스트 함수의 호출 전에 호출되는 함수
    override func setUpWithError() throws {
       
    }

    // 해체 코드를 작성하는 함수로 각 테스트 함수의 호출 후에 호출되는 함수
    override func tearDownWithError() throws {

    }

    // 테스트 케이스를 작성하는 함수로 테스트가 올바른 결과를 생성하는지 확인하는 함수
    func testExample() throws {
        let number = Even(number: 1020)
        XCTAssertTrue(number.isEven)
    }

    // 성능 테스트 케이스를 작성하는 함수로 시간을 측정하는 코드를 작성하는 함수
    func testPerformanceExample() throws {
        self.measure {
            
        }
    }

}

이렇게 작성하고 실행해보면 된다.
여기서 한층 더 깊게 들어가면,
test함수를 작성할 때엔
given, when, then 순으로 작성하면 좋다.
ex)

func testScoreIsComputed() {
  // 1.given
  let guess = sut.targetValue + 5

  // 2.when
  sut.check(guess: guess)

  // 3.then
  XCTAssertEqual(sut.scoreRound, 95, "추측된 값은 틀립니다.")
}

given : 테스트에 필요한 값들을 생성한다.
when : 테스트 할 코드를 실행한다.
then : 테스트의 결과를 출력한다.