티스토리 뷰

카테고리 없음

XCTest

Chasomin 2024. 4. 30. 15:30

XCTest란?

Xcode 프로젝트에 대한 단위 테스트, 성능 테스트, UI 테스트 등을 만들고 실행하는 프레임워크

https://developer.apple.com/videos/play/wwdc2019/413/

The pyramid model approach to testing helps to strike a balance between thoroughness, quality and execution speed.

WWDC에서 위 피라미드 모델을 참고하면 철저함, 품질 및 실행 속도 간의 균형을 맞추는 데 도움이 된다고 함

User interface - 사용자에게 가까운 영역. 뷰 단위

Integration - 통합 테스트

Unit - 코드의 양이 많아진다. 로직 단위

 

Test와 내 앱이 다른 타겟이기 때문에 @testable import MyApp 이 필요하다

🤔 그냥 import MyApp 만 하면 안되는 이유가 뭐지?

→ 접근제어자가 Internal 이 기본이기 때문에 다른 타겟에서 접근하려면 Public으로 변경해줘야함. 그럼 내가 내 앱에서 private으로 만들어뒀던 모든 코드를 풀어야한다!

@testable 키워드로 테스트할 때만 internal이어도 접근 가능하게 해줄게!!

 

✔️ setUpWithError, tearDownWithError 메서드 존재 이유

테스트를 진행하는 데 다른 테스트끼리 영향을 주고 받으면 안 되기 때문에,

외부요소, 방해요소 제거를 위해서 테스트 할때마다 setUpWithError 에서 sut를 다시 넣고, 테스트 이후 tearDownWithError 에서 초기화 시킨다.

setUpWithError()
특정test()
tearDownWithError()

이렇게 한 세트로 동작.

 

Code Coverage

내 프로젝트 코드 중 test코드를 만든 비율

🤔 난 SceneDelegate에서 테스트 한 적 없는데 왜 테스트 됐다고 나오지?

내가 작성한 코드가 아니더라도 다른 테스를 하기 위해 거쳐갔기때문에 테스트했다고 판단함.

→ Code Coverage 허점. 무조건 믿을 수는 없음

댓글
최근에 올라온 글
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함