Bazı test modülleri, test durumunun içinde gerçekleştirilemeyen özelleştirilmiş kurulum ve kaldırma adımları gerektirebilir. Tipik örnekler şunlardır:
- Diğer APK'ları (test APK'sına ek olarak) yükleme
- Bazı dosyaları cihaza aktarma
- Komutları çalıştırma (ör. adb shell pm ...)
Geçmişte, bileşen ekipleri bu tür görevleri gerçekleştirmek için genellikle ana makine yan testi yazmaya başvuruyor. Bu da, Ticaret Federasyonu çalışma şeklinin anlaşılmasını gerektiriyor ve genellikle test modülünün karmaşıklığını artırıyor.
CTS'den yararlanarak, bu tür görevleri desteklemek için test modülü yapılandırma kavramını kullanıma sunduk. Yukarıdaki yaygın görevler listesi, yalnızca birkaç satır yapılandırmayla elde edilebilir. Maksimum esneklik için ITargetPreparer veya ITargetCleaner tarafından tanımlandığı şekilde kendi hedef hazırlayıcınızı bile uygulayabilir ve kendi test modülü yapılandırmanızda kullanacak şekilde yapılandırabilirsiniz.
Test modülü yapılandırması, üst düzey modül kaynak klasörüne eklenen ve "AndroidTest.xml" adlı zorunlu bir XML dosyasıdır. XML, Trade Federation test otomasyonu koşum takımı tarafından kullanılan bir yapılandırma dosyasının biçimini izler. Şu anda test modülü yapılandırmaları aracılığıyla işlenen ana etiketler "target_preparer" ve "test" etiketleridir.
Hedef hazırlayıcılar
Adından da anlaşılacağı gibi "target_preparer" etiketi, test modülü test için yürütülmeden önce çağrılan bir kurulum yöntemi sunan hedef hazırlayıcıyı tanımlar ve "target_preparer" etiketinde başvurulan sınıf ITargetCleaner'ı da uygularsa, sökme yöntemi test modülü bittikten sonra çağrılır.
Yerleşik ortak modül yapılandırmasını kullanmak için test modülünüzün üst düzey klasörüne "AndroidTest.xml" adlı yeni bir dosya ekleyin ve dosyayı aşağıdaki içerikle doldurun:
<?xml version="1.0" encoding="utf-8"?>
<!-- [insert standard AOSP copyright here] -->
<configuration description="Test module config for Foo">
<!-- insert options here -->
</configuration>
Örneğin, aşağıdaki seçenek etiketlerini (yukarıdaki "insert" yorumuna) ekleyebilirsiniz:
<target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
<option name="run-command" value="settings put secure accessibility_enabled 1" />
<option name="teardown-command" value="settings put secure accessibility_enabled 0" />
</target_preparer>
Seçenekler test bandını şu şekilde yapılandırır:
- Test modülü çağrılmadan önce cihazda "settings put secure accessibility_enabled 1" kabuk komutunu çalıştırın
- Test modülü tamamlandıktan sonra "settings put secure accessibility_enabled 0" kabuk komutunu çalıştırın.
Bu örnekte, erişilebilirlik sırasıyla test modülü çalıştırılmadan önce/çalıştırıldıktan sonra etkinleştirilir/devre dışı bırakılır. Basit bir örnekle, "option" etiketinin nasıl kullanıldığıyla ilgili daha fazla ayrıntıya yer vermek gerekiyor. Yukarıda gösterildiği gibi, etiketin iki özelliği olabilir: ad ve değer. Ad özelliği, hazırlayıcı tarafından sunulan seçeneklerden birine atıfta bulunmalıdır.
Değer alanının tam amacı, hazırlayıcının seçeneği nasıl tanımladığına bağlıdır: dize, sayı, boole veya hatta dosya yolu olabilir. Üç yaygın hedef hazırlayıcının özetini aşağıda bulabilirsiniz:
sınıf adı: PushFilePreparer
- kısa ad: push-file
- işlevi: Test durumu klasörünün altındaki rastgele dosyaları cihazdaki hedefe gönderir
- notlar:
- Bu hazırlayıcı, klasörden klasöre veya dosyadan dosyaya aktarabilir. Yani cihazdaki bir klasörün altına dosya aktaramazsınız: Hedef dosya adını da bu klasörün altına belirtmeniz gerekir.
- options:
- push-file: Cihazda itilmesi gereken yerel dosyanın yolunu belirten bir itme özelliği. Tekrarlanabilir. Birden fazla dosya aynı uzak yola aktarılacak şekilde yapılandırılırsa en son dosya aktarılır.
- push: (desteklenmiyor) "
/path/to/srcfile.txt->/path/to/destfile.txt
" veya "/path/to/srcfile.txt->/path/to/destdir/
" olarak biçimlendirilmiş bir push özelliği. Tekrarlanabilir. Bu yol, test modülü dizine veya çıkış dizininin kendisine göre olabilir. - push-sonrası: Tüm yayınlama denemeleri yapıldıktan sonra cihazda çalıştırılacak bir komut ("
adb shell <your command>
" ile). Tipik kullanım alanı, izinler için chmod kullanmaktır.
sınıf adı: InstallApkSetup
- Kısa ad:install-apk
- function: rastgele apk dosyalarını cihazdaki hedefe aktarır
- seçenekleri:
- test-file-name: Cihaza yüklenecek apk'nin adı.
- install-arg: Başında kısa çizgi bulunan ek bağımsız değişkenler (ör. "-d") pm install komutuna iletilir. Tekrarlanabilir
sınıf adı: RunCommandTargetPreparer
- kısa ad: run-command
- işlevi: Test modülü yürütülmeden önce veya yürütüldükten sonra rastgele kabuk komutları yürütür
- seçenekleri:
- run-command: Çalıştırılacak adb kabuk komutu. Tekrarlanabilir
- teardown-command: Ayırma aşamasında çalıştırılacak adb shell komutu. Tekrarlanabilir
Test sınıfı
Test sınıfı, testi yürütmek için kullanılacak Trade Federation sınıfıdır.
<test class="com.android.tradefed.testtype.AndroidJUnitTest">
<option name="package" value="android.test.example.helloworld"/>
<option name="runner" value="android.support.test.runner.AndroidJUnitRunner"/>
</test>
Aşağıda, yaygın olarak kullanılan üç test sınıfı verilmiştir:
sınıf adı: GTest
- kısa ad: gtest
- işlevi: Belirli bir cihazda yerel test paketi çalıştıran bir test.
- options:
- native-test-device-path: Cihazda yerel testlerin bulunduğu yol.
sınıf adı: InstrumentationTest
- kısa ad: instrumentation
- fonksiyon: Belirli bir cihazda araç test paketi çalıştıran bir test
- options:
- package: Çalıştırılacak Android test uygulamasının manifest paket adı.
- class: Çalıştırılacak test sınıfı adı.
- method: Çalıştırılacak test yöntemi adı.
sınıf adı: AndroidJUnitTest
- işlevi: android.support.test.runner.AndroidJUnitRunner sınıfını kullanarak belirli bir cihazda bir araç testi paketi çalıştıran bir test. Araç testini yürütmenin ana yolu budur.