AndroidTest.xml yapısı

Modül yapılandırmasının genel yapısı benzer bir kalıp izler. normal Tradefed XML yapılandırmasına sahiptir ancak bir paketin parçası olarak işletiliyor.

İzin verilen etiketlerin listesi

AndroidTest.xml veya daha genel anlamda modül yapılandırması, şu XML etiketleri: target_preparer, multi_target_preparer, test ve metrics_collector.

Bu liste kısıtlayıcı görünse de, projenizin kapsamını test modülü kurulumunun gerektiği ve çalıştırılacağı testin nasıl yapılacağını gösterir.

NOT: Satın alınmış XML yapılandırması bölümüne bakın. konu alan Yardım Merkezi makalemizi inceleyin.

build_provider veya result_reporter gibi nesneler Bir modülün içinden çalıştırılmaya çalışıldıysa ConfigurationException yapılandırma. Bunun amacı, bu tür durumlara karşı bir görevi gerçekten yerine getiren nesnelerin gerçekleşmesini ifade eder.

Örnek modül yapılandırması

<configuration description="Config for CTS Gesture test cases">
    <option name="test-suite-tag" value="cts" />
    <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>

Bu yapılandırmada, CtsGestureTestCases.apk tarafından şu işlemler için gerekli olan bir test açıklanmaktadır: android.gesture.cts çerçevesinde yüklenmeli ve bir enstrümantasyon çalıştırılacaktır. paketinden yararlanın.

Dahil etme etiketleri <include> ve <template-include>

Modül yapılandırmalarında <include> ve <template-include> kullanımı daha fazla sonuç alırsınız. Beklendiği gibi çalışmaları garanti edilmez.

metrics_collector etiketi için özel durum

metrics_collector için izin verilir ancak bu öğeler şununla sınırlıdır: FilePullerLogCollector sınıfını kullanır. inceleyeceğiz. Bu, günlükleri belirli bir konumda bırakıyorsanız ve bunları otomatik olarak kurtarmak istiyor.

Örnek yapılandırma:

<configuration description="Config for CTS UI Rendering test cases">
    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
        <option name="cleanup-apks" value="true" />
        <option name="test-file-name" value="CtsUiRenderingTestCases.apk" />
    </target_preparer>
    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
        <option name="package" value="android.uirendering.cts" />
        <option name="runtime-hint" value="11m55s" />
        <option name="runner" value="android.uirendering.cts.runner.UiRenderingRunner" />
        <option name="isolated-storage" value="false" />
    </test>

    <!-- Collect the files in the dump directory for debugging -->
    <metrics_collector class="com.android.tradefed.device.metric.FilePullerLogCollector">
        <option name="directory-keys" value="/sdcard/UiRenderingCaptures" />
        <option name="collect-on-run-ended-only" value="true" />
    </metrics_collector>
</configuration>

Derleme bilgileri veya indirilenler ne olacak?

İzin verilen etiketlerin tanımı, bir kullanıcının modülünü herhangi bir derleme bilgisi almaz. Bu doğru değildir.

Derleme bilgileri paket düzeyindeki kurulumdan sağlanır ve paketin tüm modülleri tarafından paylaşılmaktadır. Bu, tek bir üst düzey kuruluma izin verir çalıştırmanız gerekir.

Örneğin, her bir Uyumluluk Test Paketi (CTS) cihaz bilgilerini, türlerini vb., CTS'yi ayrı ayrı sorgulayan modül paket düzeyinde kurulumda (cts.xml) bunu bir kez yapar ve her modül bu işlemi diğer kullanıcılara bilgi verebilir.

Bir modüldeki nesnelerin derleme bilgilerini alabilmesi için normal Tradefed yapılandırmasındakiyle aynı şeyi yapmak için: IBuildReceiver arayüzünü IBuildInfo alın. Görüntüleyin cihazla test etme inceleyebilirsiniz.

Meta veri alanları

Çok sayıda test modülünün bazı metadata özellikleri, Her birinin farklı bir hedefi var.

Örnek:

  <option name="config-descriptor:metadata" key="component" value="framework" />
  <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
  <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
  <option name="config-descriptor:metadata" key="parameter" value="secondary_user" />

Bileşen

component meta verileri, modülün genel Android bileşenini açıklar. düşünmesi gerekir. Testin yürütülmesi üzerinde doğrudan etkisi yoktur; bu amacıyla kullanılmasıdır.

CTS için izin verilen bileşenlerin güncel listesini şu adreste bulabilirsiniz: CtsConfigLoadingTest. Mevcut olmayan bir bileşen CTS modülü.

Paket çalıştırmasını bileşenlere göre filtreleyebilirsiniz. module-metadata-include-filter ve module-metadata-exclude-filter.

Örnek:

  --module-metadata-include-filter component framework

Bu örnek yalnızca framework ile açıklama eklenen test modülünü çalıştırır bir bileşenidir.

Parametre

parameter meta verileri bilgilendirme amaçlıdır ve testi etkiler birkaç adım var. Test modülünün hangi Android moduna uygulanacağını belirtir. Bu durumda, modlar üst düzey Android modlarıyla sınırlıdır. Örneğin: instant apps, secondary users veya different abis.

Paket çalıştırma sırasında, mod test için geçerliyse birkaç varyasyon modlarına göre oluşturulur. Her varyasyon, ancak farklı modlarda test edebilirsiniz.

  • instant_app: APK'ları hazır uygulamalar.
  • multi_abi: olanak tanır.
  • secondary_user: APK'ları yükleyen ve ikincil kullanıcı olarak testleri çalıştırabilir.

Performans testi modülleri için metrik toplama ve işleme sonrası

Performans testi modülleri için modül düzeyindeki metrics_collector ve Performans testleri için gerekli oldukları için metric_post_processor öğelerine izin verilir. Modül düzeyinde metrik toplayıcılar ve son işlemciler, modüle özel olabilir. Son işlemcilerin hem üst düzey hem de üst düzeylerde belirtilmesi önerilmez. kullanabilirsiniz.

Performans test modülü yapılandırması, test-type meta verilerini içermelidir performance değerine sahip, örneğin: xml <option name="config-descriptor:metadata" key="test-type" value="performance" /> Bu olmadan, bir test yapılandırmasında metric_collector FilePullerLogCollector veya herhangi bir metric_post_processor başarısız olur.

Örnek performans testi modülü yapılandırması:

<configuration description="Runs sample performance test.">
    <!-- Declare as a performance test module -->
    <option name="config-descriptor:metadata" key="test-type" value="performance" />
    <option name="test-tag" value="hello-world-performance-test" />
    <test class="com.android.tradefed.testtype.HostTest" >
        <option name="class" value="android.test.example.helloworldperformance.HelloWorldPerformanceTest" />
    </test>
    <!-- Add module-level post processor MetricFilePostProcessor -->
    <metric_post_processor class="com.android.tradefed.postprocessor.MetricFilePostProcessor">
        <option name="aggregate-similar-tests" value="true" />
        <option name="enable-per-test-log" value="false" />
    </metric_post_processor>
</configuration>