https://docs.tuist.io/en/guides/develop/test
Overview
Tuist는 tuist test라는 명령어를 제공한다.
문서에서 기존 Xcode에서 테스트를 실행하는 것보다 tuist test가 매력적인 이유를 아래로 소개한다.
단일 명령 (Single Command)
- tuist test 단일 명령으로 프로젝트가 필요할 경우 생성된 후 컴파일되도록 보장한다.
- tuist generate와 같은 빌드 명령을 따로 실행할 필요 없이 정말 단일 명령으로 모든 테스트가 가능하다.
보기 좋은 출력 (Beautified Output)
- Tuist는 xcbeautify와 같은 도구를 사용하여 복잡하고 보기 힘든 출력을 더 읽기 쉽게 바꿔준다.
- 이는 빌드와 테스트 과정에서 발생하는 오류나 경고를 쉽게 파악할 수 있도록 돕는다.
똑똑한 테스트 (Smart Runner)
- 변경되 코드에만 필요한 테스트를 실행한다.
- 전체 테스트를 실행할 필요 없이 효율적으로 테스트를 수행할 수 있다.
- 특히 CI 환경에서 일반적으로 변경 사항과 상관없이 전체 테스트를 실행하기 때문에 비효율적이다. Tuist는 원격 캐시와 스마트 러너를 통해 이 문제를 해결한다.
- tuist test를 수행하면 프로젝트를 해싱하여 이전에 저장된 해시와 비교하여 어떤 파일이나 모듈이 변경되었는지 판단한다.
- 의존성 그래프에서, 변경된 모듈과 관련된 테스트만 선택하여 실행한다.
빌드 캐시 최적화 (Cache)
- Tuist는 빌드 결과를 원격 캐시에 저장하고, 이를 재사용함으로써 빌드 속도를 크게 향상 시킬 수 있다.
- 대규모 프로젝트일 수록 큰 성능 이점을 제공한다.
불안정한 테스트 관리 (Flakiness)
- 플래키 테스트(flaky test)는 테스트가 불안정하게 동작해 개발자들이 테스트 결과를 신뢰하기 어렵게 만드는 문제이다.
- 이러한 문제는 자동화된 테스트 환경에서 특히 심각할 수 있다.
- 작은 코드 변경에도 불구하고 CI 빌드에서 반복적으로 실패하는 테스트 때문에 시간이 낭비되고, 작업의 효율이 떨어질 수 있다.
- 테스트의 불안정성을 줄이고, 문제가 있는 테스트를 쉽게 감지하고 수정할 수 있도록 지원한다. (프로젝트 대시보드로 제공)
Practice ( CLI )
샘플 프로젝트 git를 만들고 확인해 보자.
샘플 프로젝트는 tuist 4.32.0 기반으로 작성되었고 아래와 같은 간단한 의존성 그래프를 갖고 시작한다.
[최초 tuist test 명령]
- tuist test를 최초 수행하면, 프로젝트를 생성한 후 전체 테스트들을 모두 수행하는 것을 확인할 수 있다.
- CommonTests, FeatureATests, FeatureBTests, , MyAppTests, MyAppUITests를 수행하고 해시 값을 저장한다.
[수정 없이 tuist test 명령]
- Unit Test를 모두 스킵한다.
- MyAppUITests만 수행한다.
- 참고로 UITest에는 현재 Selective Testing 기능을 제공하지 않고 있다. issue
[App 모듈 수정 후 tuist test 명령]
- MyAppTests, MyAppUITests를 수행한다.
[FeatureA 모듈 수정 후 tuist test 명령]
- FeatureATests, MyAppTests, MyAppUITests를 수행한다.
[Common 모듈 수정 후 tuist test 명령]
- CommonTests, FeatureATests, MyAppTests, MyAppUITests를 수행한다.
Practice ( Github Actions )
간단하게 Github Action을 붙여볼 수 있을 거라 생각했는데 public archive 되어 패스
'iOS > Module' 카테고리의 다른 글
Tuist - 기존 프로젝트에 Tuist 도입 배경 및 효과 (7) | 2024.08.18 |
---|---|
Static Linking vs Dynamic Linking (3) | 2024.04.21 |
Static Framework의 번들/리소스 (0) | 2024.04.21 |