Karmaşık test yapılandırması

Bazı test modülleri, özelleştirilmiş kurulum gerektirebilir ve test durumunun içinde yapılmalıdır. Örnek olarak şunlar verilebilir:

  • (test apk'sine ek olarak) diğer apk'leri yükle
  • 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 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 ödünç aldığımızda, proje yaşam döngüsünü desteklemek için yukarıda belirtilen genel görevler listesine yalnızca birkaç satırlık yapılandırma. 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" 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 implements 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 bandını şu şekilde yapılandırır:

  1. test modülü çağrılmadan önce, şu kabuk komutunu yürütün: "settings putsecure erişilebilirlik_etkin 1 inç (cihazda 1 inç)
  2. test modülü tamamlandıktan sonra, "settings put safety adlı kabuk komutunu yürütün Accessibility_enabled 0"

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 gösterilen "option" etiketinin nasıl kullanıldığıyla ilgili daha fazla ayrıntıyı ele almak gerekir. Yukarıda gösterildiği gibi, etiketin iki özelliği olabilir: ad, 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 seçeneği nasıl tanımladığına bağlıdır: dize, sayı, boole veya hatta dosya yolu 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-dosya
    • fonksiyon: test durumu klasöründeki rastgele dosyaları cihazdaki hedef
    • notlar:
      • bu hazırlayıcı klasörden klasöre veya dosyadan dosyaya aktarabilir; verileri diğer bir deyişle, cihazdaki bir klasörün içine dosya aktaramazsınız: bu klasörün altındaki hedef dosya adını da belirtin
    • options:
      • push-file: Yolun yerel dosyasını belirten bir push-spec nereye aktarılması gerektiği üzerine düşünün. Tekrarlanabilir. Birden fazla dosyalar aynı uzak yola aktarılacak şekilde yapılandırılır; gönderilir.
      • push: (desteği sonlandırılmış) Bir push-spec, as biçimlendirilmiş "/path/to/srcfile.txt->/path/to/destfile.txt" veya "/path/to/srcfile.txt->/path/to/destdir/". 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 bu durumda izinler için chmod kullanılı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: üzerine yüklenecek apk'nin adı olanak tanır.
      • install-arg: Pm yükleme işlemine geçirilecek 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 Ticaret Federasyonu 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
    • fonksiyon: Belirli bir cihazda yerel test paketi çalıştıran bir test.
    • seçenekleri:
      • native-test-device-path: Cihazda yerel testlerin bulunduğu yol.
  • sınıf adı: InstrumentationTest

    • kısa ad: araçlar
    • fonksiyon: Belirli bir cihazda araç test 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ının adı.
      • method:Çalıştırılacak test yönteminin adı.
  • sınıf adı: AndroidJUnitTest

    • fonksiyon: Belirli bir cihazda araç test paketi çalıştıran bir test android.support.test.runner.AndroidJUnitRunner yüklü bir cihaz Araç testi yürütmenin başlıca yolu budur.