Ö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 değiştirmek için
kullanılan API'ler bulunur.
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 örneğin, kullanılan koşucu, örneğin:android.support.test.runner.AndroidJUnitRunner
android:targetPackage
özelliği tanımlanmalıdır. Değeri uygulama paketine ayarlanması gerekir.
Adımların özeti
Ç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
Raporlardan birine test ekliyorsanız mevcut kural konum ekleyin. Yeni bir test modülü oluşturuyorsanız lütfen
AndroidManifest.xml
veAndroid.mk
kurulumunu konumlardan birinde üzerindeGö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" />
Testinizi
@SmallTest
,@MediumTest
veya@LargeTest
Test modülünü m ile oluşturun.Ör.:
m FrameworksCoreTests
Testleri yapın:
En basit çözüm Şöyle itiraz edin:
atest FrameworksCoreTests
Daha karmaşık testler için Ticaret Federasyon testi Kayışı:
m tradefed-all tradefed.sh run template/local_min --template:map test=FrameworksCoreTests
Tradefed kullanmıyorsanız testleri manuel olarak yükleyin ve çalıştırın:
- Oluşturulan apk'yi yükleyin:
adb install -r ${OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk
Testleri çeşitli seçeneklerle çalıştırın:
APK'daki tüm testler
adb shell am instrument -w com.android.frameworks.coretests\ /android.support.test.runner.AndroidJUnitRunner
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
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
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:
- metrikler tam sayı veya kayan nokta olabilir
- sayısal olmayan tüm değerler silinecek
- test apk'niz, işlevsel test veya metrik testi olabilir. ikisinin birlikte kullanılması şu anda desteklenmemektedir