iOS 응용 (swift)
[iOS - swift] 1. xcodebuild로 테스트 돌리기 - 개념 (xcodebuild, unit test, ui test)
jake-kim
2024. 8. 19. 01:58
1. xcodebuild로 테스트 돌리기 - 개념 (xcodebuild, unit test, ui test)
2. xcodebuild로 테스트 돌리기 - 결과 얻어오기 (xcresult, junit, xml)
3. xcodebuild로 테스트 돌리기 - xcresult 파일 변환하여 분석하기 (xcrun xcresulttool, xcpretty, junit)
xcodebuild란?
- 커멘드 라인으로 build, query, analyze, test, archive할 수 있는 라이브러리
- Xcode는 GUI 방식인 반면, xcodebuild는 커멘드 라인 방식
- xcodebuild를 잘 사용하면 CI/CD에서도 빌드를 돌릴 수 있고 활용하면 프로젝트 구조 파악이 용이
xcodebuild 기능 살펴보기
- xcodebuild를 통해 Targets, Build Configuration 확인
- xcodebuild -list -project <YourApp.xcodeproj>
App% xcodebuild -list -project App.xcodeproj
Information about project "App":
Targets:
App
AppTests
AppUITests
Build Configurations:
Debug
Release
- xcodebuild를 통해 configuration 빌드
xcodebuild -target <your_target_name> -xcconfig <your_configuration_file>.xcconfig
- xcodebuild를 통해 유닛 테스트 빌드 수행방법
xcodebuild test [-workspace <your_workspace_name>]
[-project <your_project_name>]
-scheme <your_scheme_name>
-destination <destination-specifier>
[-only-testing:<test-identifier>]
[-skip-testing:<test-identifier>]
ex) 시뮬레이터 iPhone 15로 유닛 테스트 빌드 돌리기
xcodebuild test -scheme App -destination 'platform=iOS Simulator,name=iPhone 15'
- 이 밖에도 유닛 테스트를 돌릴 수 있는 옵션은 다양하게 존재
# 1.
xcodebuild test [-workspace <your_workspace_name>]
[-project <your_project_name>]
-scheme <your_scheme_name>
-destination <destination-specifier>
[-only-testing:<test-identifier>]
[-skip-testing:<test-identifier>]
# 2 .
xcodebuild build-for-testing [-workspace <your_workspace_name>]
[-project <your_project_name>]
-scheme <your_scheme_name>
-destination <destination-specifier>
# 3.
xcodebuild test-without-building [-workspace <your_workspace_name>]
[-project <your_project_name>]
-scheme <your_scheme_name>
-destination <destination-specifier>
[-only-testing:<test-identifier>]
[-skip-testing:<test-identifier>]
# 4.
xcodebuild test-without-building -xctestrun <your_xctestrun_name>.xctestrun
-destination <destination-specifier>
[-only-testing:<test-identifier>]
[-skip-testing:<test-identifier>]
- 위와 같이 xcodebuild로 유닛 테스트를 돌리고, 그 결과로 .xcresult 파일을 얻어와서 이 파일을 가지고 어떤 테스트가 실패하고 성공했는지 분석이 가능
- 이 파일이 있으면 분석도 용이하고, CI에도 활용할 수 있는데 이 부분은 다음 글에서 계속..
* 참고
- https://developer.apple.com/library/archive/technotes/tn2339/_index.html