Karmaşık Test Yapılandırması

Bazı test modülleri, test senaryosunun kendisinde gerçekleştirilemeyen özelleştirilmiş kurulum ve sökme adımları gerektirebilir. Tipik örnekler şunları içerebilir:

  • diğer apk'leri kurun (test apk'ye ek olarak)
  • bazı dosyaları cihaza itin
  • komutları çalıştırın (örneğin adb shell pm ...)

Geçmişte, bileşen ekipleri, Trade Federation kablo demetinin anlaşılmasını gerektiren ve tipik olarak bir test modülünün karmaşıklığını artıran bu tür görevleri gerçekleştirmek için genellikle bir ana bilgisayar tarafı testi yazmaya başvururlardı.

CTS'den ödünç alarak, bu tür görevleri desteklemek için test modülü konfigürasyonu kavramını tanıttık, yukarıdaki ortak görevler listesi sadece birkaç satır konfigürasyon ile elde edilebilir. Maksimum esneklik için, hatta tanımlandığı şekilde, kendi hedef preparer uygulayabilirsiniz ITargetPreparer veya ITargetCleaner ve kendi test modülü config kullanmalarını yapılandırın.

Bir test modülü için bir test modülü yapılandırması, 'AndroidTest.xml' adlı üst düzey modül kaynak klasörüne eklenen gerekli 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 takip eder. Ş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

Bir “target_preparer” etiketi, adından da anlaşılacağı gibi, bir hedef preparer (bkz tanımlayan ITargetPreparer ) bu teklif test modülü test etmek için yürütülür önce çağrılan bir kurulum yöntemi; “target_preparer” etiketi başvurulan sınıfı da uygulaması halinde ve ITargetCleaner test modülü tamamlandıktan sonra, onun söküm yöntemi çağrılır.

Yerleşik ortak modül yapılandırmasını kullanmak için, test modülünüz için en üst düzey klasöre yeni bir 'AndroidTest.xml' dosyası ekleyin ve onu 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>

Örnek olarak, aşağıdaki seçenek etiketlerini ekleyebiliriz (yukarıdaki "insert" yorumunda):

    <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 kablo demetini şu şekilde yapılandıracaktır:

  1. test modülü çağrılmadan önce, cihazda "ayarlar güvenli erişilebilirlik_enabled 1" kabuk komutunu yürütün
  2. test modülü tamamlandıktan sonra, "ayarlar güvenli erişilebilirlik_enabled 0" kabuk komutunu yürütün

Bu özel örnekte, erişilebilirlik sırasıyla test modülünün yürütülmesinden önce/sonra etkinleştirilir/devre dışı bırakılır. Gösterilen basit bir örnekle, "seçenek" etiketinin nasıl kullanıldığına ilişkin daha fazla ayrıntıyı ele almak gerekir. Yukarıda gösterildiği gibi, etiketin iki özelliği olabilir: isim, değer. name niteliği seçeneğin adını belirtir ve ayrıca iki nokta üst üste ile ayrılan iki bölüme ayrılır: hazırlayan için kısa ad ve hazırlayan tarafından sunulan gerçek seçenek adı.

Değer alanının tam amacı, hazırlayıcının seçeneği nasıl tanımladığına bağlıdır: bir dize, bir sayı, bir boolean, hatta bir dosya yolu vb. olabilir. Yukarıdaki örnekte, "çalıştır-komut:çalıştır-komut" adı anlamına gelir. kısa adı “run-command” olan bir hedef hazırlayıcı tarafından tanımlanan “run-command” seçeneği için değer ayarladığımızı; ve "run-command:teardown-command" adı, aynı hedef hazırlayıcı tarafından "run-command" kısa adıyla tanımlanan "teardown-command" seçeneği için değer ayarladığımız anlamına gelir. İşte üç yaygın hedef hazırlayıcının bir özeti:

  • sınıf adı: PushFilePreparer

    • kısa adı: itme dosya
    • işlevi: cihazda hedef haline test durumu klasörü altında keyfi dosyaları iter
    • notlar:
      • bu hazırlayıcı, klasörden klasöre veya dosyadan dosyaya itebilir; yani, cihazdaki bir klasörün altına bir dosya gönderemezsiniz: o klasörün altında da hedef dosya adını belirtmelisiniz.
    • seçenekleri:
      • itme: Bir itme-spec 'olarak biçimlendirilmiş /path/to/srcfile.txt->/path/to/destfile.txt ' veya ' /path/to/srcfile.txt->/path/to/destdir/ '. Tekrarlanabilir Bu yol, test modülü dizinine veya çıkış dizininin kendisine göre olabilir.
      • ** sonrası itme: ** Bir komutu ( `ile cihazda çalıştırmak için adb shell <your command> tüm iter teşebbüs edilmiştir sonra`). Tipik kullanım durumu, izinler için chmod kullanmaktır
  • sınıf adı: InstallApkSetup

    • kısa adı: install-apk
    • işlevi: cihazda hedef haline altında keyfi apk dosyalarını iter
    • seçenekler:
      • Test-dosya adı: apk'de ismi cihazına yüklü olması.
      • yüklemek-arg: Ek argümanlar örneğin “-d", önde gelen çizgi dahil komutu yüklemek pm geçirilecek tekrarlanabilir olabilir.
  • sınıf adı: RunCommandTargetPreparer

    • kısa adı: çalışma komutu
    • fonksiyonu: yürütür önce veya test modülü yürütülmesinden sonra kabuk komutlarını keyfi
    • seçenekler:
      • çalışma komutu: kabuk komutunu çalıştırın. Tekrarlanabilir
      • söküm-komut: kabuk komutunu söküm aşamasında çalıştırın. 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>

İşte üç yaygın test sınıfı:

  • sınıf adı: GTEST

    • kısa adı: GTEST
    • işlevi: Bir Testi verilen cihazdaki bir yerel test paketi çalıştırır.
    • seçenekler:
      • doğal test cihazlar yolu: doğal testleri bulunmaktadır cihazda yolu.
  • sınıf adı: InstrumentationTest

    • kısa adı: enstrümantasyon
    • fonksiyonu: A Testi belirli bir cihazda bir enstrüman test paketi çalıştırır
    • seçenekler:
      • paketi: çalıştırmak için Android testi uygulamasının apaçık paket adı.
      • sınıf: Test sınıfı adı çalıştırmak için.
      • yöntemi: test yöntemi adı çalıştırmak için.
  • sınıf adı: AndroidJUnitTest

    • işlevi: Bir Testi android.support.test.runner.AndroidJUnitRunner This kullanılarak verilen aygıt üzerinde bir enstrümantasyon test paketi çalışan bir enstrümantasyon testini çalıştırmak için ana yoldur.