Araç testleri

Öncelikle Uygulamanızı test etme başlıklı makaleyi okuyun geliştirici.android.com adresinde bulabilirsiniz. Bu iki kavram arasında bazı farklılıklar araç testlerinin platform testlerinde nasıl kullanıldığına bakalım.

Özetle, araç testi özel bir testin yürütülmesini sağlar ortamın kullanılabilmesini sağlayan am instrument komutuyla başlatılmıştır. Uygulama işlemi, temel uygulama bağlamıyla yeniden başlatılır ve başlatılır. ve uygulama süreci sanal makinesinde bir enstrümantasyon iş parçacığı başlatılır. Sizin test kodu bu araç iş parçacığında yürütülmeye başlar ve uygulama bağlamına erişim sağlayan bir Instrumentation örneği test edilen uygulama sürecini manipüle etmek için kullanılır.

Temel kavramlar

  • bir araç, uygulama paketinde açıkça belirtilmelidir. <instrumentation> etiketi, uygulama paketi manifestinin <manifest> etiketi altında iç içe yerleştirilmiş şekilde gösterilir.
  • uygulama paketi manifesti, teknik olarak birden fazla <instrumentation> etiketlerini içerir, ancak bu şekilde yaygın olarak kullanılmamaktadır.
  • her <instrumentation> şunları içermelidir:
    • android:name özelliği: bu, Instrumentation her şey test uygulamasıdır. Bu, genellikle koşucu, ör.: android.support.test.runner.AndroidJUnitRunner
    • android:targetPackage özelliği tanımlanmalıdır. Değeri uygulama paketi olarak ayarlanmış olması gerekir.

Adımların özeti

  1. Çerçeve hizmetlerine karşı hermetik testlerin yaygın hedefleri aşağıda verilmiştir:

    frameworks/base/core/tests/coretests
    frameworks/base/services/tests/servicestests
    

    Bileşeniniz için yepyeni bir araç modülü ekliyorsanız daha fazla bilgi için

  2. Raporlardan birine test ekliyorsanız mevcut kural konum ekleyin. Yeni bir test modülü oluşturuyorsanız lütfen AndroidManifest.xml ve Android.mk kurulumunu konumlardan birinde üzerinde

  3. Görüntüleyin çerçeveler/temel/çekirdek/testler/temeltestler/ inceleyebilirsiniz. Aşağıdaki satırların ek uygulamalar yüklediğini unutmayın:

    <option name="test-file-name" value="FrameworksCoreTests.apk" />
    <option name="test-file-name" value="BstatsTestApp.apk" />
    
  4. Testinizi @SmallTest, @MediumTest veya @LargeTest

  5. Test modülünü m ile oluşturun.Ör.:

    m FrameworksCoreTests
    
  6. Testleri yapın:

    m tradefed-all
    tradefed.sh run template/local_min --template:map test=FrameworksCoreTests
    
  7. Tradefed kullanmıyorsanız testleri manuel olarak yükleyin ve çalıştırın:

    1. Oluşturulan apk'yi yükleyin:
    adb install -r ${OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk
    
    1. Testleri çeşitli seçeneklerle çalıştırın:

      1. APK'daki tüm testler

        adb shell am instrument -w com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      2. belirli bir Java paketi altındaki tüm testler

        adb shell am instrument -w -e package android.animation \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      3. belirli bir sınıf altındaki tüm testler

        adb shell am instrument -w -e class \
          android.animation.AnimatorSetEventsTest \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      4. belirli bir test yöntemi

        adb shell am instrument -w -e class \
          android.animation.AnimatorSetEventsTest#testCancel \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        

Testiniz, JUnit API'lerini kullanarak başarılı veya başarısız olduğunu açık bir şekilde onaylayabilir; inç Ayrıca yakalanmayan istisnalar da işlevsel bir arızaya neden olur.

Test kodunuz, performans metrikleri yayınlamak için Instrumentation#sendStatus anahtar/değer çiftlerinin bir listesini gönderin. Aşağıdaki noktaları göz önünde bulundurun:

  1. metrikler tam sayı veya kayan nokta olabilir
  2. sayısal olmayan tüm değerler silinecek
  3. test apk'niz, işlevsel test veya metrik testi olabilir. ikisinin birlikte kullanılması şu anda desteklenmemektedir