EEYatHo 앱 깎는 이야기

Swift ) XCTestCase 파헤치기 - EEYatHo iOS 본문

iOS, Swift/Testing

Swift ) XCTestCase 파헤치기 - EEYatHo iOS

EEYatHo 2022. 11. 16. 15:34
반응형

UnitTest 파일을 만들면 상속받고 있는 XCTestCase 가 있다.

테스트에 관심이 생겨, 공식 문서 정리

 

XCTestCase 애플 문서

 

 

XCTestCase 란 ? ( Overview )


  • 테스트를 시작하기 전이나, 테스트가 끝난 후의 행동을 setup 할 수 있는 Test Method 들의 그룹입니다. 
    테스트 케이스와 함수 정의하기 
  • XCTActivity 따르기 때문에, 복잡한 테스트들을 조직화하고 단순화할 수 있으며, 분석을 위한 output 출력이 가능합니다.
    For more information, see Activities and Attachments.

  • expectations 를 사용하여 비동기 테스트를 만들 수 있습니다. 

  • 앱에서 Concurrency 를 사용하고 있다면 맘껏 사용하세요, async 나 async throws 모두 지원합니다.

  • 특정 코드 블록의 성능을 측정할 수도 있습니다. 즉, 앱 성능의 지속적인 개선을 위해 성능 테스트를 구축할 수 있습니다.
    For more information, see Improving your app’s performance.
    ( 실행시간뿐만 아니라, CPU, Memory 등도 측정 가능 )

 

 

 

테스트 준비와 정리 커스텀 ( Customizing Test Setup and Teardown )


  • class func setUp()
    test case 시작 전에, initial state 를 커스텀하는 기회 제공

 

 

 

테스트 케이스 실행 관리 ( Managing Test Case Execution )


 

 

 

성능 측정 ( Measuring Performance )


  • func measure(() -> Void)
    코드 블록의 성능을 측정(기록)합니다.

  • func measure(metrics: [XCTMetric], options: XCTMeasureOptions, block: () -> Void)
    코드 블록에 대해 선택한 항목을 측정(기록) 합니다.
    XCTMetric CPU, Memory 측정할 것을 말하며, 측정할 XCTMetric 의 배열을 넣을 수 있습니다.
    XCTMeasureOptions 는 성능 측정을 제어할 수 있습니다.

  • func measureMetrics([XCTPerformanceMetric], automaticallyStartMeasuring: Bool, for: () -> Void)
    measure(_:) 메소드보다 더욱 세분화된 제어를 제공합니다.

    automaticallyStartMeasuring 로 측정 시작점을 연기 할 수 있습니다.
    automaticallyStartMeasuring 이 false 라면, startMeasuring() 이 호출될 때 까지 측정이 시작되지 않습니다.

    여러 메트릭을 측정할 수 있습니다.
    XCTPerformanceMetric 은 측정(XCTMetric) 항목 중 하나로, 블럭의 실행시간을 측정하는 Metric 입니다.
    여러 메트릭을 측정할 수 있습니다.
    ( 결국 wallClockTime 밖에 없어서, 시간밖에 측정을 못하는 것 같은데, 아직 이해가 안되네..-ㅅ- )


  • func startMeasuring()
    코드 블록 내에서 성능 측정을 시작합니다.

  • func stopMeasuring()
    코드 블록 내에서 성능 측정을 종료합니다.

  • class var defaultPerformanceMetrics: [XCTPerformanceMetric]
    테스트에서 성능을 기록하는데 사용하는 기본 XCTPerformanceMetric 배열입니다.

  • class var defaultMetrics: [XCTMetric]
    테스트에서 성능을 기록하는데 사용하는 기본 XCTMetric 배열입니다.

  • class var defaultMeasureOptions: XCTMeasureOptions
    테스트에서 성능을 기록하는데 사용하는 기본 측정 옵션입니다.
 
 

 

비동기 테스트 (1) Expectation 만들기 ( Creating Asynchronous Test Expectations )


XCTaseCase 는 기대치(XCTestExpectation) 를 만들고,
원하는 기대치들을 기다리다가(wait), // 코드 실행이 멈춥니다.
기대치들이 이 충족(fulfill) 되면, 코드가 계속 실행되는 기능을 제공하며,

이를 이용해 비동기 테스트를 할 수 있습니다.

충족은 기대치에 직접 접근하여 .fulfill() 할 수도 있고,
Notification 도 가능하며,
Predicate 도, Key-Value Observing 도 가능합니다.
 

 

 

 

 

비동기 테스트 (2) Waiting ( Waiting for Expectations )


 

 

 

UI 인터럽션 모니터링하기 ( Monitoring UI Interruptions )


 

 

Relationships


상속 

프로토콜 구현

 

'iOS, Swift > Testing' 카테고리의 다른 글

Swift ) XCTest UnitTest - EEYatHo iOS  (0) 2022.11.12
테스트 코드 필요성, 7원칙, FIRST 원칙  (0) 2022.01.13
Comments