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: Farklı etiketler hakkında bilgi edinmek istiyorsanız Tradefed XML yapılandırması başlıklı makaleyi 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ılması önerilmez. Bu bağlantı noktalarının beklendiği gibi çalışacağı garanti edilmez.

metrics_collector etiketi için özel durum

metrics_collector izni verilir ancak modül için çekilecek ve günlüğe kaydedilecek belirli bir dosyayı veya dizini belirtmek amacıyla FilePullerLogCollector sınıfıyla sınırlıdır. Bu özellik, günlükleri belirli bir konumda bırakıyor ve otomatik olarak kurtarmak istiyorsanız kullanışlıdır.

Ö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 modülün herhangi bir derleme bilgisi almayacağı yanlış izlenimi verebilir. 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 sayede, paketin tüm modüllerinin çalıştırılması için paket için tek bir üst düzey kurulum yapılabilir.

Ö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. Bir CTS modülüne var olmayan bir bileşen eklenirse bu test göndermeden önce başarısız olur.

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 üst verileri bilgilendirme amaçlıdır ve test yürütmeyi etkiler. Test modülünün hangi Android moduna uygulandığını belirtir. Bu durumda modlar, instant apps, secondary users veya different abis gibi üst düzey Android modlarıyla sınırlıdır.

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

  • instant_app: APK'ları hazır uygulamalar.
  • multi_abi: Cihaz tarafından desteklenen her ABI için testlerin bir varyantını oluşturun.
  • secondary_user: APK'ları yükleyen ve ikincil kullanıcı olarak testler çalıştırabilir.

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

Performans testi modülleri için performans testleri açısından gerekli olduklarından modül düzeyinde metrics_collector ve metric_post_processor'e izin verilir. Modül düzeyindeki metrik toplayıcılar ve son işlemciler modüle özel olabilir. Son işlemcileri hem üst düzey hem de modül düzeyinde belirtmeniz önerilmez.

Performans testi modülü yapılandırması, performance değeriyle test-type meta verilerini içermelidir. Örneğin: xml <option name="config-descriptor:metadata" key="test-type" value="performance" /> Bu olmadan, test yapılandırması FilePullerLogCollector dışında bir metric_collector veya herhangi bir metric_post_processor içeriyorsa test göndermeden önce 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>