Komut satırından test etme

Bu dokümanda, testlerin doğrudan komut satırından nasıl çalıştırılacağı açıklanmaktadır. Bu dokümanında Android uygulaması oluşturmayı bildiğiniz ve uygulamanız için testler yazın. Hedeflerinize yönelik testler oluşturma hakkında daha fazla Android'de uygulamaları test etme bölümüne bakın.

Uygulamanızı Gradle derleme sistemini kullanarak oluşturduğunuzda Android Gradle eklentisi, Gradle'ınızdan test çalıştırmanızı sağlar komut satırını kullanarak oluşturabilirsiniz. Daha hassas bir denetim için testlerinizi bir Android Debug Bridge üzerinden çalıştırmayı seçin (adb) kabuğuyla ilgilidir. Bu işlem, sürekli entegrasyon ortamı oluşturmalısınız.

Araç Çubuğu'nu kullanarak otomatik testlerin nasıl çalıştırılacağını komut satırından hakkında daha fazla bilgi edinmek için Gradle ile testlerinizi ölçeklendirme Yönetilen Cihazlar.

Gradle ile testler yapın

Android Gradle eklentisi, şunu kullanarak Gradle projenizden test çalıştırmanızı sağlar: komut satırından erişebilirsiniz.

Aşağıdaki tabloda Gradle ile testlerinizi nasıl çalıştıracağınız özetlenmiştir:

Tablo 1. ile testlerinizi yürütmenin farklı yolları Gradle

Birim testi türü Çalıştırılacak komut Test sonucunun konumu
Yerel birim testi test görevini çalıştırın:

./gradlew test
HTML testi sonuç dosyaları:
path_to_your_project/module_name/build/reports/tests/ dizin.

XML testi sonucu dosyaları:
path_to_your_project/module_name/build/test-results/ dizin.

Araçlı birim testi connectedAndroidTest görevini çalıştırın:

./gradlew connectedAndroidTest
HTML testi sonuç dosyaları:
path_to_your_project/module_name/build/reports/androidTests/connected/ dizin.

XML testi sonucu dosyaları:
path_to_your_project/module_name/build/outputs/androidTest-results/connected/ dizin.

Gradle destekleri görev adlarının kısaltmalarını kullanın. Örneğin, şunları yaparak connectedAndroidTest görevini başlatabilirsiniz: aşağıdaki komutu girerek:

./gradlew cAT

Ayrıca check ve connectedCheck Gradle görevlerini çalıştırmayı seçebilirsiniz. Bu yerel veya araçlı testlerinizi çalıştırır; diğer Gradle eklentileri tarafından eklenen diğer kontrolleri içerir.

Modül üzerinde test çalıştırma

test ve connectedAndroidTest görevleri, belirler. Belirli bir modülde test çalıştırmak için test veya connectedAndroidTest görevinin önüne modül adı ve bir iki nokta üst üste (:). Örneğin, aşağıdaki komut yalnızca mylibrary modülü:

./gradlew mylibrary:connectedAndroidTest

Derleme varyantında test çalıştırma

test ve connectedAndroidTest görevleri, her birinde testler çalıştırır. projenizde varyant derleyin. Bir aşağıdaki söz dizimini kullanan belirli bir derleme varyantı:

  • Yerel birim testleri için:
    ./gradlew testVariantNameUnitTest
  • Araçlı testler için:
    ./gradlew connectedVariantNameAndroidTest
ziyaret edin.

Belirli test yöntemlerini veya sınıfları çalıştırma

Gradle, yerel birim testlerini çalıştırırken aşağıdakileri kullanarak belirli testleri hedefleyebilmenizi sağlar: --tests işareti. Örneğin, aşağıdaki komut yalnızca Belirtilen derleme varyantı için sampleTestMethod testi. Şu konu hakkında daha fazla bilgi edinmek için: --tests işaretini kullanarak Gradle'ın dokümanlarını okuyun test filtreleme.


./gradlew testVariantNameUnitTest --tests '*.sampleTestMethod'

Adb ile testler yapın

Android Debug Bridge ile komut satırından test çalıştırdığınızda (adb) kullanıyorsanız diğer yöntemlere kıyasla yapılacak testleri seçmeye çalışın. Tek tek test yöntemlerini kullanın, testleri özel bir ek açıklamaya göre filtreleyin veya testi belirtin seçenekleri vardır. Test çalıştırması tamamen komut satırından kontrol edildiğinden, kabuk komut dosyalarıyla testinizi çeşitli şekillerde özelleştirebilirsiniz.

Komut satırından test gerçekleştirmek için adb shell komutunu çalıştırarak bir komut satırı başlatın kabuğundan veya emülatörünüzde Bu kabuğun içinde etkinlik yöneticisi ile testlerinizi yapmak için am komutunu ve instrument alt komutunu kullanın.

Kısayol olarak bir adb kabuğu başlatabilir, am instrument öğesini çağırabilir ve tek bir giriş satırında yer alır. Kabuk cihazda açılır veya emülatöründe çalışır, testlerinizi çalıştırır, çıkış üretir ve ardından komut satırına döner Google Drive'a ekleyin.

am instrument ile test yapmak için:

  1. Ana uygulamanızı derleyin veya yeniden derleyin ve test paketi.
  2. Test paketinizi ve ana makinenizi yükleyin uygulamanızın Android paket dosyalarını (APK dosyaları) mevcut Android cihazınıza veya emülatörü kullanın.
  3. Komut satırına şu kodu girin:

    adb shell am instrument -w <test_package_name>/<runner_class>
    

    Burada <test_package_name>, testinizin Android paketinin adıdır. uygulamasının (<runner_class>, Android test çalıştırıcı sınıfının adıdır) yardımcı olur. Android paketi adı, manifest öğesinin paket özelliğini test etmek için kullanın.AndroidManifest.xml

    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 konumunda görünür.

enstrüman bayrakları

am instrument komutuyla kullanılacak tüm flag'lerin listesini bulmak için adb shell am help çalıştır. Bazı önemli işaretler aşağıdaki tabloda bulabilirsiniz:

Tablo 2. Önemli am instrument bayraklar

İşaretle Değer Açıklama
-w (yok) am instrument, enstrümantasyon gerçekleşene kadar beklemeye zorlanır kendiliğinden feshedilir. Bu sayede kabuk açık kalır. Bu işaret, şunları yapmak için gereklidir: testlerinizin sonuçlarını görebilirsiniz.
-r (yok) Çıkışlar ham biçimde sonuçlar. Aşağıdaki durumlarda bu işareti kullanın: şekilde biçimlendirilmemiş olmaları için performans ölçümlerini test sonuçları. Bu işaret, bayrakla birlikte kullanılmak üzere tasarlanmıştır -e perf true am enstrüman seçenekleri) bölümüne bakın.
-e <test_options> Anahtar/değer çiftleri olarak test seçenekleri sağlar. İlgili içeriği oluşturmak için kullanılan am instrument aracı, bunları belirtilen hedefe iletir enstrümantasyon dersini onCreate() yöntemidir. Aynı öğenin birden fazla tekrarını belirtebilirsiniz: -e <test_options> Anahtarlar ve değerler: aşağıdaki adımları izleyin: am enstrüman seçenekleri bölümüne bakın. Şunları yapabilirsiniz: bu anahtar/değer çiftlerini yalnızca AndroidJUnitRunner veya InstrumentationTestRunner ile ve alt sınıflarını içerir. Bu sınıfları başka bir sınıfla kullanmanın herhangi bir etkisi yoktur.
--no-hidden-api-checks (yok) Gizli API'lerin kullanımıyla ilgili kısıtlamaları devre dışı bırakır. Daha fazla gizli API'lerin ne olduğu ve bunun Google Analytics'i kullanarak uygulama, okuma SDK dışı arayüzlerle ilgili kısıtlamalar.

enstrüman seçenekleri

am instrument aracı, test seçeneklerini başarılı bir şekilde AndroidJUnitRunner veya InstrumentationTestRunner şu söz dizimiyle, -e işaretini kullanarak anahtar/değer çiftleri biçiminde:

-e <key> <value>

Bazı anahtarlar birden çok değeri kabul eder. Bir virgülle ayrılmış liste. Örneğin, AndroidJUnitRunner, 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.AndroidJUnitRunner

Aşağıdaki tabloda, test çalıştırıcınızla kullanabileceğiniz anahtar/değer çiftleri listelenmiştir:

Tablo 3. -e flag'leriyle birlikte kullanılacak anahtar/değer çiftleri test koşucunuz

Anahtar Değer Açıklama
package <Java_package_name> test uygulamasındaki paket hakkında daha fazla bilgi edinin. Bunu kullanan tüm test durumu sınıfları paket adı yürütülür. Bunun bir Android paket adı; bir test paketinde, Android paket adı, ancak içinde çeşitli Java paketleri olabilir.
class <class_name> Test durumundan birinin tam nitelikli Java sınıfı adı sınıflar. Yalnızca bu test durumu sınıfı yürütülür.
<class_name>#method name Tam nitelikli test durumu sınıf adı ve yöntemlerinden biri Yalnızca bu yöntem yürütülür. Sınıfın arasındaki karma işaretine (#) dikkat edin adını ve yöntem adını girin.
func true Şu süreyi uzatan tüm test sınıflarını çalıştırır: InstrumentationTestCase
unit true Şu ikisinden de uzunulmayan tüm test sınıflarını çalıştırır InstrumentationTestCase veya PerformanceTestCase.
size [small | medium | large] Boyuta göre not eklenmiş bir test yöntemi çalıştırır. Ek açıklamalar @SmallTest, @MediumTest ve @LargeTest.
perf true Şunu uygulayan tüm test sınıflarını çalıştırır: PerformanceTestCase Bu seçeneği kullanırken -r işaretini Çıkış ham biçimde tutulması için am instrument ve test sonuçları olarak yeniden biçimlendirilmez.
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örünüyor. Doğrulamak için bunu kullanın kombinasyonlarını test etmek için kullanılır.
emma true EMMA kod kapsamı analizi yürütür ve çıktıyı Cihazda /data/<app_package>/coverage.ec. Alıcı: dosya konumunu geçersiz kılmak için coverageFile tuşunu kullanın 'ne gidin.

Not: Bu seçenek için EMMA özellikli bir cihaz gerekir. kullanarak oluşturabileceğiniz bir test uygulamasının coverage hedef.

coverageFile <filename> EMMA kapsam dosyasının olanak tanır. Bu değeri UNIX biçiminde yol ve dosya adı olarak belirtin. Varsayılan dosya adı emma tuşu.

-e işaretini kullanırken aşağıdakilere dikkat edin:

  • am instrument çağırır onCreate(Bundle) içeren bir Bundle ile çiftler.
  • package anahtarı, class anahtarına göre önceliklidir. Bir paket ve ardından ayrı ayrı bu paket içinde bir sınıf belirtmek paketteki tüm testleri çalıştırır ve sınıf anahtarını yoksayar.
  • func anahtarı ile unit anahtarı birlikte kullanılamaz.

Kullanım örnekleri

Aşağıdaki bölümlerde, testleri çalıştırmak için am instrument kullanımıyla ilgili örnekler verilmiştir. Bunlar aşağıdaki yapıya dayanır:

  • Test paketinin Android paket adı com.android.demo.app.tests.
  • İki araçlı test sınıfı:
    • TestClass1 (testMethod1 test yöntemini içerir).
    • TestClass2 (testMethod2 ve testMethod3 test yöntemlerini 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.AndroidJUnitRunner

Tüm testleri bir test durumu sınıfında ç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.AndroidJUnitRunner

Test alt kümesi seçin

TestClass1 sınıfındaki ve TestClass2 yöntemindeki testMethod3 yöntemindeki tüm testleri çalıştırmak için 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.AndroidJUnitRunner

Daha fazla kullanım alanı için AndroidJUnitRunner API referansı.