📱 iOS/Xcode

[XCTest] 유닛 테스트(Unit Test) 사용후기

kyxxn 2024. 7. 24. 02:53

공부한 내용

XCTest, Unit Test

단위 테스트란 ?

기능 단위 별로, 테스트 코드를 작성하는 것
TDD처럼 꼭 테스트 코드를 먼저 작성하진 않아도 됨
즉, 순수하게 테스트 코드를 작성하는 것

단위 테스트 장점

  1. 문제점 발견
  2. → 모듈을 고립시켜 각 부분별로 정확한 동작하는지 디버깅이 가능함
  3. 변경이 쉬움
  4. → Unit Test를 믿고, 리팩토링을 쉽게 도전할 수 있음
  5. 통합이 간단
  6. 유닛 자체의 불확실성을 제거하기에 상향식 테스트 방식에서 유용하다고 함

단위 테스트 작성 방법

  • FIRST 속성
    • Fast: 빠른 속도로 테스트 수행
    • Independent: 서로 독립적으로 실행
    • Repeatable: 반복적으로 실행, 순서나 환경이 달라져도 동일한 결과
    • Self-Automation: 모든 과정을 자동으로 처리
    • Timely: 변경사항을 더욱 빠르게 확인

Unit Test 세팅하기

XCTest의 전체 메소드 동작 순서

Unit Test 환경을 만들면 자동으로 아래 파일이 만들어진다.

그리고 그 순서는 위와같이 동작

import XCTest

final class MyTest: XCTestCase {

    override func setUpWithError() throws {
        // 여기에 설정 코드를 넣음
        // 이 메서드는 클래스의 각 테스트 메서드가 호출되기 전에 호출됨
    }

    override func tearDownWithError() throws {
        // 여기에 정리 코드를 넣음
        // 이 메서드는 클래스의 각 테스트 메서드가 호출된 후에 호출됨
    }

    func testPerformanceExample() throws {
        // 성능 테스트 사례의 예
        measure {
            // 여기에서 시간을 측정하고 싶은 코드를 넣음
        }
    }

}

XCTest가 제공하는 XCTAssert 메소드

→ 결과 값을 검증하는 방법으로, 이를 통해 테스트 케이스를 작성하고 테스트 할 수 있음

  • XCTAssert(expression, message): 조건이 참인지 확인
  • XCTAssertTrue(expression, message): 표현식이 참인지 확인
  • XCTAssertFalse(expression, message): 표현식이 거짓인지 확인
  • XCTAssertEqual(expression1, expression2, message): 두 표현식이 같은지 확인
  • XCTAssertNotEqual(expression1, expression2, message): 두 표현식이 같지 않은지 확인
  • XCTAssertNil(expression, message): 표현식이 nil인지 확인
  • XCTAssertNotNil(expression, message): 표현식이 nil이 아닌지 확인
  • XCTFail(message): 무조건 실패로 처리, 특정 조건을 만족하지 않을 때 호출ㄱㄴ

레퍼런스

[iOS/Swift] 유닛 테스트(Unit Test) 사용 방법

TDD와 Xcode에서 XCTest 활용하기