테스트 실행기는 호출 흐름의 실행 단위입니다. 여기서 실제로 테스트가 실행됩니다.
인터페이스
테스트 실행기는 IRemoteTest 인터페이스를 통해 정의됩니다. 이 인터페이스는 테스트 실행 시 호출되는, 구현할 간단한 run
메서드를 제공합니다.
이렇게 하면 가장 단순한 의미의 테스트 실행이 발생할 수 있습니다. 하지만 실제 과정에서는 테스트 작성자에게 빌드 및 기기 정보 등 추가 정보가 있어야 테스트를 제대로 작성할 수 있습니다. 이러한 경우에는 다음과 같은 인터페이스가 유용할 수 있습니다.
기본
아래의 두 인터페이스는 현재 가장 광범위하게 사용되고 있으며, 대부분의 테스트와 관련된 기본적인 요구사항을 나타냅니다.
- IBuildReceiver는 테스트가 빌드 제공업체 단계에서 생성된
IBuildInfo
객체를 가져오도록 허용합니다. 이 단계에는 테스트 설정과 관련된 모든 정보와 아티팩트가 포함되어 있습니다. - IDeviceTest는 테스트 중인 기기를 나타내는
ITestDevice
객체의 수신을 허용하고 객체와 상호작용하는 API를 제공합니다.
고급
테스트 하네스와 테스트 실행기 간의 좀 더 복잡한 상호작용을 가능하게 해주는 추가적인 인터페이스가 있습니다.
- ITestFilterReceiver는 테스트가 특정 테스트만 실행하도록 하기 위한 필터 모음을 수신할 수 있게 해줍니다. 이는 테스트의 하위 집합을 실행하는 경우에 유용합니다.
- ITestCollector는 테스트 실행기가 테스트를 실제로 실행하는 대신 시험적 실행만 할 수 있게 해줍니다. 이는 모든 테스트 사례의 목록을 수집할 때 유용합니다.
기존 테스트 실행기
다양한 테스트 실행기가 이미 존재하며, 이 중 일부는 주요 테스트 유형과 관련이 있습니다.
- AndroidJUnitTest / InstrumentationTest(기기 측의 AJUR과 관련됨)
- GTest(기기 및 호스트 측) 및 googletest 라이브러리
- 호스트 기반 테스트(호스트에서 실행되고 거기서 기기를 호출하는 Java 테스트)
- 순수 Java 단위 테스트(Google의 실행기가 둘 다 실행)
- Python 테스트
- Google 벤치마크 테스트 및 벤치마크 라이브러리
위의 테스트 외에도 다수의 맞춤 테스트 실행기가 존재합니다. 이러한 테스트는 부팅 테스트와 같은 일부 기능 테스트와 관련된 특수한 용도로 사용됩니다.
새 테스트 실행기 작성
새 테스트 실행기 작성에 관한 자세한 내용은 테스트 작성 섹션을 참고하세요.