이 포스팅은 iOS Experience 시리즈 18 편 중 13 번째 글 입니다.

  • Part 1 - 01: 스토리보드의 장단점
  • Part 2 - 02: 코드리뷰 Part 1
  • Part 3 - 03: 코드리뷰 Part 2
  • Part 4 - 04: IBOutlet에서의 Optional
  • Part 5 - 05: Optional Chaining의 동작 방법
  • Part 6 - 06: UITableView에 대해서
  • Part 7 - 07: 코드리뷰 Part 3
  • Part 8 - 08: 패키지 매니저
  • Part 9 - 09: URL Loading System
  • Part 10 - 10: Lazy를 잘 안쓰는 이유
  • Part 11 - 11: iOS Gitignore
  • Part 12 - 12: Toast UI에 대한 생각
  • Part 13 - This Post
  • Part 14 - 14: RunLoop
  • Part 15 - 15: UIApplication
  • Part 16 - 16: 코드리뷰 Part 4
  • Part 17 - 17: MVC to MVVM
  • Part 18 - 18: VIPER
▼ 목록 보기

XCTest란?

알아야 하는 점

  • 앞에 test로 시작해야 한다. 그렇지 않으면 Xcode가 잡지를 못한다.
  • 테스트 전에 항상 시작해야 하는 것이 있다면 setUp 함수를 오버라이딩하여 구현한다.

Target 설정

  • 각각의 파일의 Target membership을 추가하는 방법으로 가능하다.

Test 시 simulator 뜨지 않게 하는 방법

image

  1. 프로젝트
  2. general
  3. test Target
  4. host application -> none으로 변경

Error test

func test_로봇1개이상추가실패() {
    let playerManager = PlayerManager()
    var thrownError: Error?
    let robot1 = Player(type: .robot)
    let robot2 = Player(type: .robot)
    
    XCTAssertNoThrow(try playerManager.participate(player: robot1))
    XCTAssertThrowsError(try playerManager.participate(player: robot2)) {
        thrownError = $0
    }
    
    XCTAssertTrue(thrownError is PlayerManagerError, "잘못된 에러 타입 : \(type(of: thrownError))")
    
    XCTAssertEqual(thrownError as? PlayerManagerError, .CapacityFullError)
}
  • 에러를 받는다.
  • 에러의 타입을 확인한다.
  • 에러의 케이스를 확인한다.