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.