AndroidTest.xml yapısı

Modül yapılandırmasının genel yapısı, normal Tradefed XML yapılandırmasına benzer bir model izler, ancak bir paketin parçası olarak çalıştıkları için bazı kısıtlamalar vardır.

İzin verilen etiketlerin listesi

AndroidTest.xml veya daha geniş bir modül yapılandırması yalnızca şu XML etiketlerini içerebilir: target_preparer , multi_target_preparer , test ve metrics_collector .

Bu liste kısıtlayıcı görünse de, test modülü kurulum ihtiyaçlarını ve çalıştırılacak testi tam olarak tanımlamanıza olanak tanır.

NOT: Farklı etiketler hakkında bilgi tazelemeye ihtiyacınız varsa Tradefed XML yapılandırmasına bakın.

build_provider veya result_reporter gibi nesneler, bir modül yapılandırmasının içinden çalıştırılmaya çalışılırsa bir ConfigurationException oluşturur. Bu, aslında bir modülün içinden bazı görevleri yerine getiren bu nesnelerin beklentisini ortadan kaldırmak içindir.

Örnek modül konfigürasyonu

<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ırma, CtsGestureTestCases.apk yüklenmesini gerektiren ve android.gesture.cts paketine karşı bir enstrümantasyon çalıştıracak bir testi açıklar.

metrics_collector etiketi için özel durum

Modül için çekilecek ve günlüğe kaydedilecek belirli bir dosya veya dizini belirtmek için metrics_collector izin verilir ancak FilePullerLogCollector sınıfıyla sınırlıdır. Günlükleri belirli bir konumda bırakıyorsanız ve bunları otomatik olarak kurtarmak istiyorsanız bu 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>

Yapı bilgileri veya indirmeler ne olacak?

İzin verilen etiketlerin tanımı, bir modülün herhangi bir derleme bilgisi almayacağı gibi yanlış bir izlenim verebilir. Bu doğru değil .

Derleme bilgileri paket düzeyindeki kurulumdan sağlanır ve paketin tüm modülleri tarafından paylaşılır. Bu, paketin tüm modüllerini çalıştırmak için paket için tek bir üst düzey kurulum sağlar.

Örneğin, her bir Uyumluluk Test Paketi (CTS) modülünün cihaz bilgilerini, türleri vb. ayrı ayrı sorgulaması yerine, CTS paketi düzeyindeki kurulum ( cts.xml ) bunu bir kez yapar ve her modül talep ederse bu bilgileri alır.

Bir modüldeki nesnelerin derleme bilgisini alabilmesi için, normal Tradefed yapılandırmasındakiyle aynı şeyi yapmaları gerekir: IBuildInfo almak için IBuildReceiver arabirimini uygulayın. Daha fazla ayrıntı için cihazla test etme konusuna bakın.

Meta veri alanları

Çok sayıda test modülü, her birinin benzersiz bir amacı olan bazı metadata spesifikasyonlarını içerir.

Ö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 test etmeyi amaçladığı genel Android bileşenini açıklar. Test yürütme üzerinde herhangi bir doğrudan etkisi yoktur; öncelikle organizasyonel amaçlar için kullanılır.

CTS için izin verilen bileşenlerin güncel listesi CtsConfigLoadingTest'te mevcuttur. Bir CTS modülüne var olmayan bir bileşen eklenirse bu test ön gönderimde başarısız olur.

module-metadata-include-filter ve module-metadata-exclude-filter kullanarak bileşenlere dayalı bir paket çalıştırmayı filtreleyebilirsiniz.

Örnek:

  --module-metadata-include-filter component framework

Bu örnek, yalnızca framework bileşeniyle açıklama eklenmiş test modülünü çalıştırır.

Parametre

parameter meta verileri bilgi amaçlıdır ve testin yürütülmesini etkiler. Test modülünün hangi Android modu için geçerli olduğunu 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ışması sırasında, mod test için geçerliyse, moda bağlı olarak test modülünün çeşitli varyasyonları oluşturulur. Her varyasyon, benzer testleri ancak farklı modlar altında çalıştırır.

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