Google, Siyah topluluklar için ırksal eşitliği ilerletmeye kararlıdır. Nasıl olduğunu gör.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Karmaşık Test Yapılandırması

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

  • diğer uygulamaları yükle (test apk'sine ek olarak)
  • bazı dosyaları cihaza aktar
  • komutları çalıştır (örn. adb shell pm ...)

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

CTS'den ödünç alarak, bu tür görevleri desteklemek için test modülü yapılandırma kavramını tanıttık, yukarıdaki ortak görev listesi sadece birkaç yapılandırma satırı ile elde edilebilir. Maksimum esneklik için, ITargetPreparer veya ITargetCleaner tarafından tanımlandığı şekilde kendi hedef hazırlayıcınızı uygulayabilir ve bunları kendi test modülü yapılandırmanızda kullanmak üzere yapılandırabilirsiniz.

Bir test modülü için bir test modülü yapılandırması, üst düzey modül kaynak klasörüne eklenen ve "AndroidTest.xml" adlı bir XML dosyasıdır. XML, Ticaret Federasyonu test otomasyonu kablo demeti tarafından kullanılan bir yapılandırma dosyasının biçimini izler. Şu anda test modülü yapılandırmalarıyla işlenen ana etiketler “target_preparer” ve “test” etiketleridir.

Hedef hazırlayıcılar

Adından da anlaşılacağı gibi bir “target_preparer” etiketi, test modülü test için yürütülmeden önce çağrılan bir kurulum yöntemi sunan bir hedef hazırlayıcı (bkz. ITargetPreparer ) tanımlar; ve “target_preparer” etiketinde referans verilen sınıf da ITargetCleaner uygularsa , test modülü bittikten sonra sökme yöntemi çağrılır.

Yerleşik ortak modül yapılandırmasını kullanmak için, test modülünüzün en üst düzey klasörüne yeni bir 'AndroidTest.xml' dosyası ekleyin ve 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 “ekle” 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 kayışını şu şekilde yapılandırır:

  1. test modülü çağrılmadan önce, cihazda “settings access accessibility_enabled 1” kabuk komutunu yürütün
  2. test modülü bittikten sonra, “settings put secure accessibility_enabled 0” kabuk komutunu yürütün

Bu özel örnekte erişilebilirlik, sırasıyla test modülü yürütülmesinden önce / sonra etkinleştirilir / devre dışı bırakılır. Basit bir örnek gösterildiğinde, "seçenek" etiketinin nasıl kullanıldığı hakkında daha fazla ayrıntıya yer vermek gerekir. Yukarıda gösterildiği gibi, etiketin iki özelliği olabilir: ad, değer. Name özniteliği seçeneğin adını belirtir ve iki nokta üst üste ile ayrılmış iki kısma ayrılır: hazırlayıcı için kısa ad ve hazırlayıcı 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 boole veya hatta bir dosya yolu vb. Olabilir. Yukarıdaki örnekte, “run-command: run-command” 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ısı tarafından “run-command” kısa adıyla da tanımlanan “teardown-command” seçeneği için değer ayarladığımız anlamına gelir. İşte üç ortak hedef hazırlayıcının özeti:

  • sınıf adı: PushFilePreparer

    • kısa isim : push-file
    • işlevi : test durumu klasörü altındaki rasgele dosyaları aygıttaki hedefe iter
    • notlar :
      • bu hazırlayıcı klasörden klasöre veya dosyadan dosyaya itebilir; yani, aygıttaki bir klasörün altına dosya gönderemezsiniz: bu klasörün altındaki hedef dosya adını da belirtmeniz gerekir
    • seçenekleri :
      • push: ' /path/to/srcfile.txt->/path/to/destfile.txt ' veya ' /path/to/srcfile.txt->/path/to/destdir/ ' olarak biçimlendirilmiş bir push-spec. Tekrarlanabilir Bu yol test modülü dizinine veya dışarı dizininin kendisine göre olabilir.
      • ** itme sonrası: ** Tüm adb shell <your command> sonra cihazda çalıştırmak için bir komut (` adb shell <your command> 'ile). Tipik kullanım durumu izinler için chmod kullanıyor olabilir
  • sınıf adı: InstallApkSetup

    • kısa isim: install-apk
    • işlevi: keyfi apk dosyalarını cihazdaki hedefe doğru iter
    • seçenekleri:
      • test-dosya-adı: cihaza yüklenecek apk'nin adı.
      • install-arg: pm install komutuna iletilecek ek tire, örneğin “-d” dahil olmak üzere ek argümanlar.
  • sınıf adı: RunCommandTargetPreparer

    • kısa isim: run-command
    • işlevi: test modülü yürütülmesinden önce veya sonra rastgele kabuk komutları yürütür
    • seçenekleri:
      • run-command: çalıştırılacak adb shell komutu. Tekrarlanabilir
      • teardown-command: yırtma aşaması sırasında çalıştırılacak adb shell komutu. Tekrar edilebilir

Test sınıfı

Test sınıfı, testi gerçekleştirmek 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>
 

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

  • sınıf adı: GTest

    • kısa isim: gtest
    • function: Belirli bir aygıtta yerel bir test paketi çalıştıran bir Test.
    • seçenekleri:
      • native-test-device-path: Yerel testlerin bulunduğu cihazdaki yol.
  • sınıf adı: InstrumentationTest

    • kısa isim: enstrümantasyon
    • işlevi: Verilen aygıtta bir enstrümantasyon test paketini çalıştıran Test
    • seçenekleri:
      • paket: Çalıştırılacak Android test uygulamasının bildirim paket adı.
      • class: Çalıştırılacak test sınıfı adı.
      • method: Çalıştırılacak test yönteminin adı.
  • sınıf adı: AndroidJUnitTest

    • işlevi: android.support.test.runner.AndroidJUnitRunner kullanarak verilen aygıtta bir enstrümantasyon test paketi çalıştıran bir test Bu bir enstrümantasyon testi yürütmenin ana yoludur.