Tradefed의 도구 모음은 전반적인 실행을 구동하는 공통의 테스트 실행기 밑에서 여러 개의 테스트가 실행되고 있는 설정입니다.
Tradefed에서는 도구 모음이 ITestSuite
를 통해 구동됩니다. 이 클래스는 테스트를 실행 방식과 상관없이 추가하고 제거할 수 있게 해줍니다.
정의
- 도구 모음: 유사한 최상위 수준 설정 아래에서 실행되어 단일 호출 아래에 결과를 보고하도록 구성된 테스트 모듈 모음입니다.
- 최상위 수준 설정: 테스트 모듈 실행 전에 기기에 적용되는 설정입니다.
- 기본 구성: 어떤 모듈을 실행해야 하고 어떤 최상위 수준 설정을 사용해야 하는지 설명하는 도구 모음 수준의 Tradefed XML 구성입니다.
- 모듈 수준 설정: 모듈 실행 직전에 기기에 적용되는 설정입니다. 모듈 전용 설정이라고도 불립니다.
- 모듈 구성: 모듈, 그리고 어떤 모듈 수준 설정을 실행해야 하는지 설명하는
AndroidTest.xml
Tradefed XML 구성입니다. - 모듈: 설정 단계(모듈 수준 설정), 테스트 실행 단계 및 해체 단계로 구성된 테스트 단위입니다.
- 모듈 내 재시도: 모듈 내에서 하네스에 의한 재시도가 자동으로 이루어집니다.
- 도구 모음 재시도: 이전에 불합격한 도구 모음의 테스트가 전부 재실행됩니다.
ITestSuite 구조
Tradefed의 ITestSuite
는 도구 모음 실행을 구동하는 공통 기본 클래스입니다. 모든 주요 테스트 도구 모음, 특히 Android CTS(호환성 테스트 모음) 및 Android VTS(공급업체 테스트 모음)에 의해 공유되며 모든 도구 모음 전체에 걸쳐 일관적인 실행 경험을 보장합니다.
간혹 ITestSuite를 도구 모음 실행기라고 부를 때도 있습니다.
도구 모음 실행기는 실행 시 다음 단계를 따릅니다.
- 모듈의 구성을 로드하고 어떤 집합을 실행할지 결정합니다.
각 모듈을 실행합니다.
- 모듈 수준의 설정을 실행합니다.
- 모듈 테스트를 실행합니다.
- 모듈 수준의 해체를 실행합니다.
결과를 보고합니다.
최상위 수준 설정
Tradefed 관점에서 보면 ITestSuite
는 또 하나의 테스트에 불과합니다. 즉 복잡하기는 하지만 다른 여타 IRemoteTest
와 비슷한 테스트일 뿐입니다. 따라서 Tradefed 구성에서 도구 모음 실행기를 지정할 때에는 Tradefed가 일반적인 구성 패턴에 따라 build_provider
, target_preparer
, 테스트(이 경우 Google 도구 모음) 및 target_cleaner
를 실행합니다.
ITestSuite
를 포함하는 Tradefed 구성의 이러한 순서가 바로 최상위 수준 설정입니다.
예를 들면 다음과 같습니다.
<configuration description="Common config for Compatibility suites">
<build_provider class="com.android.compatibility.common.tradefed.build.CompatibilityBuildProvider" />
<!-- Setup applied before the suite: so everything running in the suite will
have this setup beforehand -->
<target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
<option name="run-command" value="settings put global package_verifier_enable 0" />
<option name="teardown-command" value="settings put global package_verifier_enable 1"/>
</target_preparer>
<!-- Our ITestSuite implementation -->
<test class="com.android.compatibility.common.tradefed.testtype.suite.CompatibilityTestSuite" />
<result_reporter class="com.android.compatibility.common.tradefed.result.ConsoleReporter" />
</configuration>
모듈 메타데이터
테스트 모듈에 지정된 모듈 메타데이터 추가 정보를 AndroidTest.xml
이라고 부릅니다. 이 메타데이터를 사용하면 모듈에 관한 추가 정보를 지정할 수 있으며 모듈을 필터링할 수 있습니다.
메타데이터 예:
<option name="config-descriptor:metadata" key="component" value="framework" />
<option name="config-descriptor:metadata" key="parameter" value="instant_app" />
메타데이터 필터 예:
--module-metadata-include-filter component=framework
위의 예시는 프레임워크를 포함하는 모든 모듈을 구성요소 메타데이터로 실행합니다.
전체 AndroidTest.xml
예:
<configuration description="Config for CTS Gesture test cases">
<option name="test-suite-tag" value="cts" />
<!-- Metadata -->
<option name="config-descriptor:metadata" key="component" value="framework" />
<option name="config-descriptor:metadata" key="parameter" value="instant_app" />
<!-- End: metadata -->
<target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
<option name="cleanup-apks" value="true" />
<option name="test-file-name" value="CtsGestureTestCases.apk" />
</target_preparer>
<test class="com.android.tradefed.testtype.AndroidJUnitTest" >
<option name="package" value="android.gesture.cts" />
<option name="runtime-hint" value="10m50s" />
</test>
</configuration>
매개변수화된 모듈
특수 메타데이터 유형은 parameter
입니다.
<option name="config-descriptor:metadata" key="parameter" value="instant_app" />
이 메타데이터는 표준 앱 모드 대신 인스턴트 앱 등의 다른 모드에서 모듈을 실행해야 함을 보여줍니다.
가능한 모든 모드나 매개변수는 ModuleParameters
에 의해 설명되며, 특정 모드에서 실행되도록 모듈 설정을 변경할 수 있게 해주는 ModuleParametersHelper
의 관련 핸들러를 보유합니다.
예를 들어 인스턴트 앱 모드는 APK 설치를 인스턴트 모드로 강제합니다.
매개변수화가 발생하기 위해서는 명령줄에서 다음을 통해 이를 사용 설정해야 합니다.
--enable-parameterized-modules
또한 다음을 통해 단일 모드를 실행할 수도 있습니다.
--enable-parameterized-modules --module-parameter <Mode>
--enable-parameterized-modules --module-parameter INSTANT_APP
모듈의 매개변수화된 버전이 실행되면 이 버전에서는 매개변수화된 모듈 이름 아래에 결과를 보고합니다(예: CtsGestureTestCases[instant]
vs. 기본 CtsGestureTestCases
).