Skip to content

번역

이 페이지를 번역하거나 기존 번역을 개선할 수 있습니다.

기여

Smart test runner

원격 프로젝트 필수\

이 기능은 <0>원격 프로젝트</0>가 요구됩니다.

프로젝트가 커질 수록 테스트 수도 증가합니다. 오랜 시간동안 모든 PR 또는 main에 푸시할 때마다 전체 테스트를 수행하면 수 초의 시간이 걸렸습니다. 하지만 이 방법은 팀이 가진 수천 개의 테스트에는 적합하지 않습니다.

CI에서 매번 테스트를 수행하면 변경 사항과 상관없이 정리된 Derived Data를 사용하여 프로젝트를 빌드하고 모든 테스트를 다시 수행할 것입니다. tuist test는 빌드 시간을 크게 줄이고 그런 다음에 테스트 실행 시간을 단축하는데 도움을 줍니다.

선택적으로 테스트 실행

선택적으로 테스트를 실행하기 위해 tuist test 명령어를 사용합니다. 이 명령어는 캐시 워밍과 같은 방식으로 프로젝트를 해시하고 성공적으로 실행되면 다음 실행 시 변경 사항을 파악하기 위해 해시 값을 저장합니다.

다음에 실행하면 tuist test는 해시를 사용하여 마지막으로 성공적으로 실행된 테스트 이후 변경된 테스트만 선별합니다.

예를 들어, 다음과 같은 의존성 그래프가 있다고 가정해 봅니다:

  • FeatureAFeatureATests를 가지며, Core에 의존
  • FeatureBFeatureBTests를 가지며, Core에 의존
  • CoreCoreTests를 가짐

tuist test는 다음과 같이 동작합니다:

ActionDescriptionInternal state
tuist test 호출CoreTests, FeatureATests, 그리고 FeatureBTests에서 테스트 실행FeatureATests, FeatureBTests, 그리고 CoreTests의 해시 저장
FeatureA 업데이트개발자가 해당 타겟의 코드를 수정이전과 동일
tuist test 호출FeatureATests의 해시가 변경되었으므로 FeatureATests의 테스트 실행FeatureATests의 새로운 해시 저장
Core 업데이트개발자가 해당 타겟의 코드를 수정이전과 동일
tuist test 호출CoreTests, FeatureATests, 그리고 FeatureBTests에서 테스트 실행FeatureATests, FeatureBTests, 그리고 CoreTests의 새로운 해시 저장

선택적 테스트와 바이너리 캐싱의 조합은 CI에서 테스트를 수행하는 시간을 극적으로 줄일 수 있습니다.

모듈 VS 파일 단위 세분화\

테스트와 소스 코드 간의 의존성을 코드 내에서 파악할 수 없으므로 선택적 테스트의 세분화는 파일 단위에서만 가능합니다. 따라서 선택적 테스트의 이점을 극대화 하려면 파일을 작고 집중적으로 유지하길 권장합니다.

Released under the MIT License.