Tradefed XML 구성의 상위 수준 구조

Tradefed의 구성은 실행할 테스트와 수행할 준비/설정 단계를 설명하는 XML 구조를 따릅니다.

이론적으로는 단일 명령에 대해 모든 것이 XML로 정의될 수 있습니다. 그러나 실제로는 기본 템플릿 XML 파일을 갖고 추가 명령줄 매개변수를 사용하여 사용자 정의하는 것이 더 실용적입니다.

구조

<configuration description="<description of the configuration>">
    <!-- A build provider that takes local device information -->
    <build_provider class="com.android.tradefed.build.BootstrapBuildProvider" />

    <!-- Some target preparation, disabled by default -->
    <target_preparer class="com.android.tradefed.targetprep.PreloadedClassesPreparer">
        <option name="disable" value="true" />
    </target_preparer>

    <!-- One test running some unit tests -->
    <test class="com.android.tradefed.testtype.HostTest">
        <option name="class" value="com.android.tradefed.build.BuildInfoTest" />
    </test>

    <!-- [OPTIONAL] -->
    <logger class="com.android.tradefed.log.FileLogger">
        <option name="log-level" value="VERBOSE" />
        <option name="log-level-display" value="VERBOSE" />
    </logger>

    <!-- [OPTIONAL] -->
    <log_saver class="com.android.tradefed.result.FileSystemLogSaver" />

    <!-- As many reporters as we want -->
    <result_reporter class="com.android.tradefed.result.ConsoleResultReporter" />
    <result_reporter class="com.android.tradefed.result.suite.SuiteResultReporter" />
    <result_reporter class="com.android.tradefed.result.MetricsXMLResultReporter"/>
</configuration>

전체 Tradefed XML은 <configuration> 태그로 구분됩니다. Tradefed objects 자체 태그로 정의됩니다(예: build_provider , target_preparer , test 등). 개별 목적은 아키텍처 섹션에 자세히 설명되어 있습니다.

각 객체에는 런타임 시 해결되는 class= 에 정의된 객체와 연관된 Java 클래스가 있습니다. 따라서 클래스가 포함된 JAR 파일이 실행 시 Tradefed Java 클래스 경로에 있으면 해당 파일을 찾아 해결할 수 있습니다.

Tradefed 개체 주문

다른 태그의 순서는 중요하지 않습니다. 예를 들어, target_preparer 뒤에 build_provider 지정되어도 아무런 차이가 없습니다. 테스트 호출의 흐름은 하네스 자체에 의해 시행되므로 항상 올바른 순서로 호출됩니다.

동일한 태그가 있는 개체의 순서는 중요합니다 . 예를 들어 정의된 두 개의 target_preparer 개체는 XML의 정의 순서에 따라 호출됩니다. 장치 설정의 최종 상태가 변경될 수 있으므로 이를 이해하는 것이 중요합니다. 예를 들어, APK를 플래싱한 후 설치하는 것은 APK를 설치하고 플래싱하는 것과 동일하지 않습니다. 플래싱하면 기기가 지워지기 때문입니다.