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 ve androidTestMyFlavor klasörü gösteriliyor
Android görünümünde](https://developer.android.com/static/studio/images/test/test-myflavor-android-test-android-view.png?authuser=9&hl=tr)
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 ancak androidTestMyFlavor klasörü seçilmedi
Android görünümünde gösteriliyor](https://developer.android.com/static/studio/images/test/test-otherflavor-android-test-android-view.png?authuser=9&hl=tr)
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 ve androidTestMyFlavor klasörü etkin
Proje görünümünde](https://developer.android.com/static/studio/images/test/test-myflavor-android-test-project-view.png?authuser=9&hl=tr)
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 ancak androidTestMyFlavor klasörü seçilmedi
Proje görünümünde etkin](https://developer.android.com/static/studio/images/test/test-otherflavor-android-test-project-view.png?authuser=9&hl=tr)
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.