Android Studio'da test edin ve Komut satırından test, temel test yapılandırmalarını nasıl kullanabileceğinizi göstereceğim. Ancak, uygulamanız ve ileri düzey test gereksinimlerinin ortaya çıktığında, testinizi yapılandırmaya devam edin. Örneğin, şunları yapmak istiyorsunuz:
- Araçlı testleri yalnızca belirli bir derleme varyantı için çalıştırın veya varyantı geçersiz kılın manifesto ayarlarında düzenleyebilirsiniz.
- Testlerinizin çalıştırıldığı derleme türünü değiştirme veya Gradle'ı yapılandırma seçenekleri vardır.
- Araçlı testlerinizi kendi test modüllerine çıkarın.
- Sürekli Entegrasyon kurulumunuz kapsamında daha gelişmiş testler gerçekleştirin.
Bu sayfada, varsayılan değer ayarlandığında testlerinizi yapılandırmanın uygun olmadığından emin olun.
Derleme varyantı için araçlı test oluşturma
Projeniz yardımcı olacak araçlarlı testleri de bu kaynak kümelerine karşılık gelir. Böylece test kodunuz düzenli kalır ve yalnızca belirli bir derleme varyantı için geçerli olan testleri çalıştırmanızı sağlar.
Araçlı testleri bir derleme varyantına bağlamak için bu testleri kendi kaynak kümesi, şu konumda bulunur: src/androidTestVariantName
src/androidTest/
kaynak kümesindeki araçlı testler, oluşturun. "MyFlavor" için test APK'sı oluştururken varyantınızı Gradle, src/androidTest/
ve src/androidTestMyFlavor/
özelliklerini bir araya getiriyor kaynak kümeleridir.
Android Studio'da derleme varyantınız için bir test kaynağı grubu eklemek üzere şu adımları uygulayın:
- Proje penceresinde menüyü tıklayın ve Proje görünümünde yer alır.
- Uygun modül klasöründe src klasörünü sağ tıklayın ve Yeni > Dizin'e gidin.
- Dizin adı olarak "androidTestVariantName" yazın. Örneğin, "MyFlavor" adlı bir derleme varyantınız varsa dizin adını kullanın
androidTestMyFlavor
- Tamam'ı tıklayın.
- Yeni dizini sağ tıklayın ve Yeni > Dizin'e gidin.
- "Java" yazın girin ve OK (Tamam) seçeneğini tıklayın.
Artık bu yeni kaynak kümesine test eklemek için yeni test ekleme adımlarını inceleyin. Hedef Dizini Seçin iletişim kutusunda, yeni varyant testi kaynak kümesi.
Aşağıdaki tabloda, enstrümantasyon testi dosyalarının uygulamanın kod kaynak kümelerine karşılık gelen kaynak kümelerinde bulunur:
Tablo 1. Uygulama kaynak kodu ve karşılık gelen enstrümantasyon test dosyaları
Uygulama sınıfına giden yol | Eşleşen araç test sınıfına giden yol |
---|---|
src/main/java/Example.java | src/androidTest/java/AndroidExampleTest.java |
src/myFlavor/java/Example.java | src/androidTestMyFlavor/java/AndroidExampleTest.java |
Uygulama kaynak gruplarınızda olduğu gibi Gradle derlemesi de farklı test kaynağı kümelerindeki dosyaları geçersiz kılar. Bu durumda, androidTestMyFlavor
kaynak kümesi geçersiz kılmalarında AndroidExampleTest.java
dosya androidTest
kaynak kümesindeki sürüm. Çünkü ürün aroması kaynağı grubu, ana kaynak grubuna göre önceliklidir.
Derleme varyantı seçicide farklı tatlar seçtiğinizde uygun androidTest
klasörlerinin Android görünümünde kullanılan klasörleri göster:

MyFlavor
varyant seçildi; "the" Android görünümünde androidTestMyFlavor
klasörü gösterilir.Farklı bir varyant aşağıdaki durumlarda androidTestMyFlavor
klasörü gösterilmez seçili:

OtherFlavor
varyant seçildi; "the" androidTestMyFlavor
klasörü Android görünümünde gösterilmez.Proje görünümünü kullanıyorsanız ancak görünüm aynıysa bu görünüm biraz farklı görünür şu ilke geçerlidir:

MyFlavor
varyant seçildi; "the" androidTestMyFlavor
klasör, Proje görünümünde etkin.Farklı bir varyant seçildiğinde androidTestMyFlavor
klasörü kaldırılmaz görünür ancak etkin olarak gösterilmiyor:

OtherFlavor
varyant seçildi; "the" androidTestMyFlavor
klasörü Proje görünümünde etkin değil.Kaynak gruplarının nasıl birleştirildiği hakkında daha fazla bilgi edinmek için Kaynak kümeleri.
Araç manifest ayarlarını yapılandırın
Araçlı testler, kendi özel APK'sına sahip ayrı bir APK'da AndroidManifest.xml
dosyası yükleyin. Gradle, test APK'nızı derlerken AndroidManifest.xml
dosyasını otomatik olarak oluşturur ve yapılandırır şununla: <instrumentation>
düğümü. Gradle'ın bu düğümü sizin için yapılandırmasının nedenlerinden biri de targetPackage
özelliği, test edilen uygulamanın doğru paket adını belirtir.
Bu düğümle ilgili diğer ayarları değiştirmek için başka bir öğe oluşturun manifest dosyanızı yükleyin veya modül düzeyinizi yapılandırın build.gradle
dosyası, gösterildiği gibi aşağıdaki kod örneğine bakalım. Seçeneklerin tam listesini şu adreste bulabilirsiniz: BaseFlavor
API referansı.
Eski
android { ... defaultConfig { ... testApplicationId "com.example.test" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testHandleProfiling true testFunctionalTest true } }
Kotlin
android { ... defaultConfig { ... testApplicationId = "com.example.test" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" testHandleProfiling = true testFunctionalTest = true } }
Each product flavor you configure can override properties in the defaultConfig {}
block. To learn more, go to Configure product flavors.
The properties in the snippet are:
Setting | Description |
---|---|
testApplicationId | Specifies the application ID for the test APK. |
testInstrumentationRunner | Specifies the fully qualified class name of the test instrumentation runner. |
testHandleProfiling | If set to true , enables the instrumentation class to start and stop profiling.If set to false , profiling occurs the entire time the instrumentation class is running. |
testFunctionalTest | If set to true , indicates that the Android system should run the instrumentation class as a functional test.The default value is false . |
Change the test build type
By default, all instrumentation tests run against the debug
build type. You can change this to another build type by using the testBuildType
property in your module-level build.gradle
file. For example, if you want to run your tests against your staging
build type, edit the file as shown in the following snippet:
Groovy
android { ... testBuildType "staging" }
Kotlin
android { ... testBuildType = "staging" }
Gradle test seçeneklerini yapılandırın
Android Gradle eklentisi şunları yapmanıza olanak tanır: tüm testleriniz veya yalnızca bazıları için belirli seçenekler belirtebilirsiniz. modül düzeyindeki build.gradle
dosyası için testOptions
bloğunu kullanarak Gradle'ın tüm testlerinizi çalıştırma şeklini değiştiren seçenekleri belirtin:
Eski
android { ... // Encapsulates options for running tests. testOptions { reportDir "$rootDir/test-reports" resultsDir "$rootDir/test-results" } }
Kotlin
android { ... // Encapsulates options for running tests. testOptions { reportDir "$rootDir/test-reports" resultsDir = "$rootDir/test-results" } }
reportDir
özelliği, Gradle'ın testi kaydettiği dizini değiştirir. raporlar. Gradle, test raporlarını varsayılan olarak path_to_your_project/module_name /build/outputs/reports/
dizini. $rootDir
, yolu göreli olarak belirler kök dizinine dizin.
resultsDir
özelliği, Gradle'ın testi kaydettiği dizini değiştirir. sonuç. Gradle, test sonuçlarını varsayılan olarak path_to_your_project/module_name /build/outputs/test-results/
dizini. $rootDir
, yolu göreli olarak belirler kök dizinine dizin.
Yalnızca yerel birim testlerine ilişkin seçenekleri belirtmek için unitTests
testOptions
içinde engellenecek.
Eski
android { ... testOptions { ... // Encapsulates options for local unit tests. unitTests { returnDefaultValues true all { jvmArgs '-XX:MaxPermSize=256m' if (it.name == 'testDebugUnitTest') { systemProperty 'debug', 'true' } ... } } } }
Kotlin
android { ... testOptions { ... // Encapsulates options for local unit tests. unitTests { returnDefaultValues = true all { jvmArgs = listOf("-XX:MaxPermSize=256m") if (it.name == "testDebugUnitTest") { systemProperty = mapOf("debug" to "true") } ... } } } }
Varsayılan olarak, yerel birim testleri kod her yapıldığında bir istisna atar Android platformu API'lerine erişmeye çalışırsanız örnek Android bağımlılıkları veya bir test çerçevesi kullanılarak oluşturulan Örnek. Ancak returnDefaultValues
özelliğini etkinleştirebilirsiniz. test, platform API'lerine erişirken yerine boş veya sıfır değerini döndürür istisnai bir durum olabilir.
all
bloğu, Gradle'ın çalışma şeklini kontrol etme seçeneklerini içerir. yerel birim testleri. Belirtebileceğiniz tüm seçeneklerin listesi için Gradle'ın referans belgeleri.
jvmArgs
özelliği, test JVM'leri için JVM bağımsız değişkenlerini ayarlar.
Ayrıca, görev adını işaretleyerek seçenekleri yalnızca belirlediğiniz testlere uygulayabilirsiniz belirtin. Örnek snippet'te debug
özelliği true
olarak ayarlanmıştır ancak yalnızca testDebugUnitTest
görevi için.
Araçlı testler için ayrı test modülleri kullanma
Araçlı testler için özel bir modüle sahip olmak istiyorsanız, kalan kısmını testlerinizden çıkarmak yerine, ayrı bir test modülü oluşturun derlemesini kitaplık modülüne benzer şekilde yapılandıracaktır.
Test modülü oluşturmak için aşağıdaki adımları uygulayın:
- Kitaplık modülü oluşturun.
- Modül düzeyindeki
build.gradle
dosyasınacom.android.test
eklentisidir.com.android.library
- Projeyi Senkronize Et'i
tıklayın.
Test modülünüzü oluşturduktan sonra, test kodunuzu ana veya varyant kaynak grubu (örneğin, src/main/java
veya src/variant/java
) tıklayın. Uygulama modülünüz bu aromaları test modülünüzde yeniden oluşturabilirsiniz. Varyanta duyarlı bağımlılığı kullanma yönetim, test modülü, hedef modüldeki eşleştirme aromasını test etmeye çalışır.
Test modülleri, varsayılan olarak yalnızca bir hata ayıklama varyantı içerir ve bu varyantları test eder. Ancak, test edilen uygulama projesine uygun yeni derleme türleri oluşturabilirsiniz. To test modülü, hata ayıklamayı değil farklı bir derleme türünü test etmek için Test projesinde hata ayıklama varyantını devre dışı bırakmak için VariantFilter
:
Eski
android { variantFilter { variant -> if (variant.buildType.name.equals('debug')) { variant.setIgnore(true); } } }
Kotlin
android { variantFilter { if (buildType.name == "debug") { ignore = true } } }
Bir test modülünün yalnızca belirli tatları veya belirli bir matchingFallbacks
uygulamasını kullanabilirsiniz. özelliğini kullanmanızı öneririz. Bu ayrıca, test modülünün kendisi için yapılandırma zorunluluğunu ortadan kaldırıyor.