Bazı test modülleri, özelleştirilmiş kurulum gerektirebilir ve test durumunun içinde yapılmalıdır. Örnek olarak şunlar verilebilir:
- Diğer APK'ları (test APK'sına ek olarak) yükleme
- Bazı dosyaları cihaza aktarma
- komut çalıştırma (ör. adb kabuk pm ...)
Geçmişte bileşen ekipleri, bu tür görevleri gerçekleştirmek için genellikle ana makine tarafı test yazmaya başvuruyordu. Bu da Trade Federation koşum takımının anlaşılmasını gerektiriyor ve genellikle test modülünün karmaşıklığını artırıyordu.
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 kendi hedefinizi bile uygulayabilirsiniz. ITargetPreparer tarafından tanımlandığı şekliyle hazırlayıcı veya ITargetCleaner ve bunları kendi test modülü yapılandırmanızda kullanacak şekilde yapılandırın.
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" etiketleri arasında yer alır.
Hedef hazırlayıcılar
Adından da anlaşılacağı gibi “target_preparer” etiketi bir hedef hazırlayıcıyı tanımlar (bkz. ITargetPreparer) test modülü yürütülmeden önce çağrılan bir kurulum yöntemi sunar. test amaçlıdır; ve "target_preparer" etiketinde başvurulan sınıf da uygular ITargetCleaner, ayırma yöntemi, test modülü bittikten sonra çağrılır.
Yerleşik ortak modül yapılandırmasını kullanmak için şuraya yeni bir "AndroidTest.xml" dosyası ekleyin: test modülünüzün üst düzey klasörünü açın ve aşağıdakiyle doldurun içerik:
<?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 ekleyebiliriz ("insert" yorumuna bulabilirsiniz):
<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 donanımını şu şekilde yapılandırır:
- test modülü çağrılmadan önce, şu kabuk komutunu yürütün: "settings putsecure erişilebilirlik_etkin 1 inç (cihazda 1 inç)
- test modülü tamamlandıktan sonra, "settings put safety adlı kabuk komutunu yürütün Accessibility_enabled 0"
Bu örnekte, erişilebilirlik test modülü yürütme adımlarına bakalım. Basit bir örnekle, "option" etiketinin nasıl kullanıldığına ilişkin daha fazla ayrıntı sunmak için gereklidir. Yukarıda gösterildiği gibi, etiketin iki özelliği olabilir: ad ve değer. Ad özelliği, hazırlayan kişinin sunduğu seçeneklerden biri olabilir.
Değer alanının tam amacı, hazırlayıcının nasıl tanımlandığına bağlıdır. dize, sayı, boole, hatta dosya yolu bile olabilir. Aşağıda, yaygın olarak kullanılan üç hedef hazırlayıcının özeti verilmiştir:
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.
- seçenekleri:
- push-file: Cihazda itilmesi gereken yerel dosyanın yolunu belirten bir itme özelliği. Tekrarlanabilir. Birden fazla dosyalar aynı uzak yola aktarılacak şekilde yapılandırılır; gönderilir.
- 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ı: LoadApkSetup
- kısa ad:install-apk
- function: rastgele apk dosyalarını aşağıdaki hedefe aktarır. cihaz
- seçenekleri:
- test-file-name: Cihaza yüklenecek APK'nın adı.
- install-arg: Pm yükleme işlemine aktarılacak ek bağımsız değişkenler komutu, ör. "-d" olarak değişir. Tekrarlanabilir
sınıf adı: RunCommandTargetPreparer
- kısa ad: run-command
- function: Testten önce veya sonra rastgele kabuk komutlarını yürütür modülün yürütmesi
- options:
- run-command:adb kabuk komutunu çalıştırın. Tekrarlanabilir
- teardown-command:söküm aşamasında çalıştırılacak adb kabuk 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
- function: Belirli bir cihazda yerel test paketi çalıştıran bir test.
- options:
- native-test-device-path: Cihazdaki yerel testlerin bulunduğu yol.
sınıf adı: InstrumentationTest
- kısa ad: araçlar
- işlevi: Belirli bir cihazda bir araç testi paketi çalıştıran bir test
- seçenekleri:
- 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.