Bu belgede, testlerin doğrudan komut satırından nasıl çalıştırılacağı açıklanmaktadır. Bu belgede, Android uygulaması oluşturmayı ve uygulamanız için test yazmayı bildiğiniz varsayılır. Uygulamanız için test oluşturma hakkında daha fazla bilgi edinmek istiyorsanız Android'de uygulamaları test etme başlıklı makaleye bakın.
Uygulamanızı Gradle derleme sistemini kullanarak oluşturduğunuzda Android Gradle eklentisi, komut satırını kullanarak Gradle projenizden test çalıştırmanıza olanak tanır. Daha ayrıntılı kontrol için testlerinizi Android Debug Bridge (adb) kabuğu üzerinden çalıştırmayı seçebilirsiniz. Bu, sürekli entegrasyon ortamında test çalıştırırken yararlı olabilir.
Gradle'ın sizin için yönettiği sanal cihazları kullanarak komut satırından otomatik enstrümantasyonlu testleri nasıl çalıştıracağınızı öğrenmek için Gradle Managed Devices ile testlerinizi ölçeklendirme başlıklı makaleyi inceleyin.
Gradle ile test çalıştırma
Android Gradle eklentisi, komut satırını kullanarak Gradle projenizden testler çalıştırmanıza olanak tanır.
Aşağıdaki tabloda, testlerinizi Gradle ile nasıl çalıştıracağınız özetlenmektedir:
Tablo 1. Gradle ile testlerinizi çalıştırmanın farklı yolları
| Birim testi türü | Çalıştırılacak komut | Test sonucu konumu |
|---|---|---|
| Yerel birim testi |
test görevini çalıştırın:
|
HTML testi sonuç dosyaları:path_to_your_project/module_name/build/reports/tests/
dizini.
XML test sonucu dosyaları: |
| Araçlı birim testi |
connectedAndroidTest görevini çalıştırın:
|
HTML testi sonuç dosyaları:path_to_your_project/module_name/build/reports/androidTests/connected/
dizini.
XML test sonucu dosyaları: |
Gradle, görev adı kısaltmalarını destekler.
Örneğin, aşağıdaki komutu girerek connectedAndroidTest görevini başlatabilirsiniz:
./gradlew cATAyrıca Gradle görevlerini check ve connectedCheck çalıştırmayı da seçebilirsiniz. Bu görevler sırasıyla yerel veya enstrümanlı testlerinizi çalıştırır ancak diğer Gradle eklentileri tarafından eklenen başka kontrolleri de içerir.
Bir modülde test çalıştırma
test ve connectedAndroidTest görevleri, projenizdeki her modülde testler çalıştırır. test veya connectedAndroidTest görevine modül adını ve iki nokta üst üste (:) ekleyerek belirli bir modülde test çalıştırabilirsiniz. Örneğin, aşağıdaki komut yalnızca mylibrary modülü için enstrümanlı testler çalıştırır:
./gradlew mylibrary:connectedAndroidTestBir derleme değişkeninde test çalıştırma
test ve connectedAndroidTest görevleri, projenizdeki her derleme değişkeninde testler çalıştırır. Aşağıdaki söz dizimini kullanarak belirli bir derleme değişkenini hedefleyebilirsiniz:
- Yerel birim testleri için:
./gradlew testVariantNameUnitTest - Araçlı testler için:
./gradlew connectedVariantNameAndroidTest
Belirli test yöntemlerini veya sınıflarını çalıştırma
Gradle, yerel birim testleri çalıştırırken --tests işaretini kullanarak belirli testleri hedeflemenize olanak tanır. Örneğin, aşağıdaki komut yalnızca belirtilen derleme değişkeni için sampleTestMethod testlerini çalıştırır. --tests işaretini kullanma hakkında daha fazla bilgi edinmek için Gradle'ın test filtreleme ile ilgili dokümanlarını okuyun.
./gradlew testVariantNameUnitTest --tests '*.sampleTestMethod'
adb ile test çalıştırma
Android Debug Bridge (adb) ile komut satırından test çalıştırdığınızda, diğer yöntemlere kıyasla çalıştırılacak testleri seçmek için daha fazla seçeneğiniz olur. Test yöntemlerini tek tek seçebilir, testleri özel bir ek açıklamaya göre filtreleyebilir veya test seçeneklerini belirtebilirsiniz. Test çalıştırması tamamen komut satırından kontrol edildiğinden, testinizi kabuk komut dosyalarıyla çeşitli şekillerde özelleştirebilirsiniz.
Komut satırından test çalıştırmak için adb shell komutunu çalıştırarak cihazınızda veya emülatörünüzde bir komut satırı kabuğu başlatın. Bu kabukta, am komutunu kullanarak etkinlik yöneticisi ile etkileşimde bulunabilir ve testlerinizi çalıştırmak için instrument alt komutunu kullanabilirsiniz.
Kısayol olarak, tek bir giriş satırında adb kabuğu başlatabilir, am instrument işlevini çağırabilir ve komut satırı işaretlerini belirtebilirsiniz. Kabuk, cihazda veya emülatörde açılır, testlerinizi çalıştırır, çıkış üretir ve ardından bilgisayarınızdaki komut satırına geri döner.
am instrument ile test çalıştırmak için:
- Ana uygulamanızı ve test paketinizi oluşturun veya yeniden oluşturun.
- Test paketinizi ve ana uygulama Android paket dosyalarınızı (APK dosyaları) mevcut Android cihazınıza veya emülatörünüze yükleyin.
Komut satırına şunu girin:
adb shell am instrument -w <test_package_name>/<runner_class>Burada
<test_package_name>, test uygulamanızın Android paket adı,<runner_class>ise kullandığınız Android test çalıştırıcı sınıfının adıdır. Android paket adı, test paketinizin manifest dosyasındaki (AndroidManifest.xml) manifest öğesinin paket özelliğinin değeridir.Android test çalıştırıcı sınıfı genellikle
AndroidJUnitRunner:adb shell am instrument -w com.android.example/androidx.test.runner.AndroidJUnitRunner
Test sonuçlarınız STDOUT bölümünde gösterilir.
am instrument flags
am instrument komutuyla kullanılacak tüm işaretlerin listesini bulmak için adb shell am help komutunu çalıştırın. Bazı önemli işaretler aşağıdaki tabloda açıklanmıştır:
Tablo 2. Önemli am instrument
işaretler
| İşaretle | Değer | Açıklama |
|---|---|---|
-w
|
(yok) |
am instrument, kendisini sonlandırmadan önce enstrümantasyonun sonlandırılmasını bekler. Bu, testler tamamlanana kadar kabuğun açık kalmasını sağlar. Testlerinizin sonuçlarını görmek için bu işaret gereklidir.
|
-r
|
(yok) |
Sonuçları ham biçimde verir. Performans ölçümlerini test sonuçları olarak biçimlendirilmeyecek şekilde toplamak istediğinizde bu işareti kullanın. Bu işaret, -e perf true işaretinin (am enstrüman seçenekleri bölümünde belgelenmiştir) kullanımı için tasarlanmıştır.
|
-e
|
<test_options>
|
Test seçeneklerini anahtar/değer çiftleri olarak sağlar. am instrument aracı, onCreate() yöntemini kullanarak bunları belirtilen enstrümantasyon sınıfına iletir. -e <test_options> öğesinin birden fazla oluşumunu belirtebilirsiniz. Anahtarlar ve değerler, am enstrüman seçenekleri bölümünde açıklanmıştır. Bu anahtar/değer çiftlerini yalnızca AndroidJUnitRunner veya InstrumentationTestRunner ve alt sınıflarıyla kullanabilirsiniz. Bu sınıfların diğer sınıflarla birlikte kullanılması herhangi bir etki oluşturmaz.
|
--no-hidden-api-checks
|
(yok) | Gizli API'lerin kullanımıyla ilgili kısıtlamaları devre dışı bırakır. Gizli API'lerin ne olduğu ve uygulamanızı nasıl etkileyebileceği hakkında daha fazla bilgi için SDK olmayan arayüzlerde kısıtlamalar başlıklı makaleyi inceleyin. |
am instrument options
am instrument aracı, -e işaretini kullanarak anahtar/değer çiftleri biçiminde AndroidJUnitRunner veya InstrumentationTestRunner için test seçeneklerini şu söz dizimiyle iletir:
-e <key> <value>
Bazı anahtarlar birden fazla değer kabul eder. Virgülle ayrılmış listede birden fazla değer belirtirsiniz. Örneğin, AndroidJUnitRunner anahtarının bu çağrılması, package anahtarı için birden fazla değer sağlar:
adb shell am instrument -w -e package com.android.test.package1,com.android.test.package2 \
> com.android.test/androidx.test.runner.AndroidJUnitRunnerAşağıdaki tabloda, test çalıştırıcınızla kullanabileceğiniz anahtar/değer çiftleri listelenmiştir:
Tablo 3. Test çalıştırıcınızla kullanılacak anahtar/değer çiftlerini -e işaretiyle işaretleyin.
| Anahtar | Değer | Açıklama |
|---|---|---|
package
|
<Java_package_name>
|
Test uygulamasındaki paketlerden birinin tam nitelikli Java paket adı. Bu paket adını kullanan tüm test durumu sınıfları yürütülür. Bunun bir Android paket adı olmadığını unutmayın. Test paketinin tek bir Android paket adı vardır ancak içinde birkaç Java paketi olabilir. |
class |
<class_name> |
Test durumu sınıflarından birinin tam nitelikli Java sınıfı adı. Yalnızca bu test senaryosu sınıfı yürütülür. |
<class_name>#method name |
Tam nitelikli bir test durumu sınıfı adı ve yöntemlerinden biri. Yalnızca bu yöntem yürütülür. Sınıf adı ile yöntem adı arasındaki diyez işaretine (#) dikkat edin. | |
func |
true |
InstrumentationTestCase'yı genişleten tüm test sınıflarını çalıştırır.
|
unit |
true |
InstrumentationTestCase veya PerformanceTestCase'ü genişletmeyen tüm test sınıflarını çalıştırır.
|
size |
[small | medium | large]
|
Boyutla açıklama eklenmiş bir test yöntemini çalıştırır. Anotasyonlar @SmallTest, @MediumTest ve @LargeTest'dir.
|
perf |
true |
PerformanceTestCase uygulayan tüm test sınıflarını çalıştırır.
Bu seçeneği kullandığınızda, çıktının ham biçimde kalması ve test sonuçları olarak yeniden biçimlendirilmemesi için -r işaretini am instrument olarak belirtin.
|
debug |
true |
Testleri hata ayıklama modunda çalıştırır. |
log |
true |
Belirtilen tüm testleri yükler ve günlüğe kaydeder ancak çalıştırmaz. Test bilgileri STDOUT içinde gösterilir. Diğer filtrelerin ve test özelliklerinin kombinasyonlarını doğrulamak için bu özelliği kullanın.
|
emma |
true |
EMMA kod kapsamı analizini çalıştırır ve çıkışı cihazdaki
/data/<app_package>/coverage.ec konumuna yazar. Dosya konumunu geçersiz kılmak için aşağıdaki girişte açıklanan coverageFile tuşunu kullanın.
Not: Bu seçenek için test uygulamasının EMMA ile donatılmış bir derlemesi gerekir. Bu derlemeyi |
coverageFile |
<filename> |
Cihazdaki EMMA kapsam dosyasının varsayılan konumunu geçersiz kılar. Bu değeri UNIX biçiminde yol ve dosya adı olarak belirtin.
Varsayılan dosya adı, emma anahtarıyla ilgili giriş bölümünde açıklanmıştır.
|
-e işaretini kullanırken aşağıdakilere dikkat edin:
am instrument, anahtar/değer çiftlerini içeren birBundleileonCreate(Bundle)'i çağırır.packageanahtarı,classanahtarına göre önceliklidir. Bir paket belirtip ardından bu paketin içinde ayrı olarak bir sınıf belirtirseniz Android, paketteki tüm testleri çalıştırır ve sınıf anahtarını yoksayar.funcanahtarı veunitanahtarı aynı anda olamaz.
Kullanım örnekleri
Aşağıdaki bölümlerde, test çalıştırmak için am instrument kullanma örnekleri verilmiştir.
Aşağıdaki yapıya dayanır:
- Test paketinin Android paket adı
com.android.demo.app.testsolmalıdır. - İki araçlı test sınıfı:
TestClass1, which contains the test methodtestMethod1.TestClass2, test yöntemleritestMethod2vetestMethod3'yi içerir.
- Test çalıştırıcısı
AndroidJUnitRunner.
Test paketinin tamamını çalıştırma
Test paketindeki tüm test sınıflarını çalıştırmak için şunu girin:
adb shell am instrument -w com.android.demo.app.tests/androidx.test.runner.AndroidJUnitRunnerBir test durumu sınıfındaki tüm testleri çalıştırma
TestClass1 sınıfındaki tüm testleri çalıştırmak için şunu girin:
adb shell am instrument -w \
> -e class com.android.demo.app.tests.TestClass1 \
> com.android.demo.app.tests/androidx.test.runner.AndroidJUnitRunnerTest alt kümesi seçin
TestClass1 sınıfındaki tüm testleri ve TestClass2 içindeki testMethod3 yöntemini çalıştırmak için:
şunu girin:
adb shell am instrument -w \
> -e class com.android.demo.app.tests.TestClass1,com.android.demo.app.tests.TestClass2#testMethod3 \
> com.android.demo.app.tests/androidx.test.runner.AndroidJUnitRunnerDiğer kullanım alanlarını AndroidJUnitRunner
API referansında bulabilirsiniz.
Birleştirilmiş test raporlarını görüntüleme
Android Gradle eklentisi, birim ve araçlı testlerden elde edilen sonuçları birleştiren HTML kontrol panelleri oluşturan birleştirilmiş test raporu görevleri sağlar.
Ön koşullar
- Android Gradle Eklentisi 9.2.0-alpha07 veya sonraki sürümler.
Birleştirilmiş test raporları oluşturmak için aşağıdaki görevlerden birini çalıştırın:
| Rapor kapsamı | Komut | Açıklama | Konumu bildirme |
|---|---|---|---|
| Geçerli modül | ./gradlew :module_name:createTestReport |
Birim ve araçlı test sonuçlarını birleştirerek mevcut modül için birleşik bir test raporu oluşturur. | path_to_your_project/module_name/build/reports/tests/test-report/ |
| Mevcut modül ve bağımlılıklar | ./gradlew :module_name:createAggregatedTestReport |
Mevcut uygulama modülü ve kitaplık bağımlılıkları için birleştirilmiş bir test raporu oluşturur. | path_to_your_project/module_name/build/reports/tests/aggregated-test-report/ |