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=class=에 정의된 객체와 관련된 Java 클래스가 있습니다. 따라서 실행 시 클래스를 포함하는 JAR 파일만 Tradefed Java 클래스 경로에 있으면 이를 찾아 리졸브할 수 있습니다.

OTradefed 객체 순서

여러 태그의 순서는 상관없습니다. 예를 들어 build_providertarget_preparer 이후에 지정되면 차이가 없습니다. 테스트 호출의 흐름은 하네스 자체에 의해 적용되므로 항상 올바른 순서대로 호출됩니다.

같은 태그를 포함하는 객체의 순서는 상관이 있습니다. 예를 들어 정의된 두 개의 target_preparer 객체는 XML에서 정의 순서대로 호출됩니다. 기기 설정의 최종 상태가 변경될 수 있으므로 이를 이해하는 것이 중요합니다. 예를 들면 플래시에 이어 APK 설치APK 및 플래시 설치와 다르며, 이는 플래시로 기기가 삭제되기 때문입니다.