테스트는 어떤 이유로든 불합격할 수 있으며 경우에 따라서는 단순히 테스트를 재실행하는 것만으로도 다시 테스트에 합격할 수 있습니다. 이는 기본 인프라에서 발생한 문제 등에서 비롯된 결함 때문입니다. Tradefed를 구성하여 재시도를 자동으로 수행할 수 있습니다.
자동 재시도의 핵심은 모든 테스트가 재실행되지 않도록 하는 것입니다. 즉, 불합격한 테스트만 실행하기 때문에 실행 시간이 크게 절약됩니다.
또한 Tradefed는 반복 기능을 통해 결함을 감지할 수 있도록 테스트를 여러 차례 실행할 수 있게 지원합니다. 이 경우에는 모든 테스트가 재실행되며, 반복에 실패할 경우 테스트도 불합격합니다.
기능 사용 설정
자동 재시도는 max-testcase-run-count
및 retry-strategy
기능을 사용 설정하는 두 가지 옵션을 제공하는 RetryDecision 개체를 통해 제어됩니다.
max-testcase-run-count
는 시도하려는 재시도 또는 반복 회수를 유도하며, 재시도가 영구적으로 이루어지지 않도록 상한선을 설정합니다.
retry-strategy
는 재시도 방식에 대한 결정을 유도합니다. 자세한 내용은 다음 섹션을 참고하세요.
사용 중지
다음 옵션을 사용합니다.
--retry-strategy NO_RETRY
재시도 실패
테스트 불합격을 재시도하려면 다음 옵션을 사용하세요.
--retry-strategy RETRY_ANY_FAILURE --max-testcase-run-count X
그러면 합격하거나 최대 재시도 횟수에 도달할 때까지 불합격이 재시도됩니다(둘 중 먼저 발생한 경우를 적용).
반복
다음 옵션을 사용하면 테스트를 여러 차례에 걸쳐 재시도할 수 있습니다.
--retry-strategy ITERATIONS --max-testcase-run-count X
결과가 어떤 형식인가요?
결과 보고자는 기본적으로 모든 시도에 관한 집계 결과를 수신하게 됩니다.
예를 들어 RETRY_ANY_FAILURE
에 대한 Fail
및 Pass
의 경우 재시도를 통해 재시도를 실패하므로 실패가 Pass
가 됩니다.
보고자는 집계되지 않는 결과를 수신할 수도 있습니다. 이렇게 하려면 집계되지 않은 상세 결과 지원을 선언하는 ISupportGranularResults 인터페이스를 확장해야 합니다.
구현 세부정보
테스트 사례 수준에서 자동 재시도를 사용 설정하려면 ITestFilterReceiver를 구현합니다.
ITestFilterReceiver를 구현할 수 없는 경우 IAutoRetriableTest를 구현하여 다시 실행 방식을 제어할 수 있습니다. InstalledInstrumentationsTest는 해당 인터페이스의 구현 예입니다.