티스토리 뷰

Xcode Code Coverage 이슈

pilot376 2020. 7. 27. 08:59

Xcode에서 테스트 코드가 없음에도 불구하고 커버리지가 높게 나오는 이슈가 있다.

아래 순서대로 이슈를 재현해보자.

 

1) CodeCoverage 이름으로 프로젝트를 생성한다. 이때 Include Unit Tests 항목을 체크한다.

 

 

2) 커버리지를 활성화한다.

  • Edit Scheme 클릭
  • Test > Options 메뉴에서 Gather coverage for 체크박스 선택

 

 

3) CodeCoverageTests.swift 파일을 열어보자.

testExample()와 testPerformanceExample() 함수에 아무런 내용이 없기 때문에 테스트 시 커버리지가 0%가 나올 것으로 예상된다.

 

 

4) 테스트를 실행하고 커버리지를 확인해보자.

  • Command-U 단축키로 테스트 실행
  • show the report navigator 메뉴 > coverage 확인

 

 

작성된 테스트 코드는 없지만 커버리지는 높게 나온다.


왜 그럴까?

Xcode는 테스트 시 아래의 순서로 커버리지를 체크한다.

  1. code coverage 리포팅 시 구동되는 코드의 범위를 측정
  2. xcode 테스트 실행 시 시뮬레이터에서 실제 앱이 구동됨 (= 앱이 시작되고 관련 코드들이 실행됨)
  3. 테스트 코드에 의한 실행된 코드와 실제 앱이 구동되면서 실행된 코드를 모두 커버되었다고 판단함
  4. 테스트 코드가 하나도 없더라도 커버리지가 0%로 나오지 않고 시뮬레이터 구동 시 실행된 코드의 퍼센트만큼 표시됨

참고

댓글