Araçlı testler, ister fiziksel ister emülasyonlu olarak Android cihazlarda çalıştırılır. Farklı Android çerçeve API'lerinden yararlanabilirler. Araçlı testler bu nedenle, yerel testlerden daha fazla doğruluk sağlasalar da yavaş yavaş.
Araçlı testleri yalnızca test etmeniz gereken durumlarda kullanmanızı öneririz. gerçek bir cihazın davranışında. AndroidX Test, çeşitli kitaplıklar sağlar gerekli olduğunda araçlı testler yazmayı kolaylaştıran ögeler bulunur.
Test ortamınızı ayarlama
Android Studio projenizde, enstrümantasyon kullanılan
module-name/src/androidTest/java/
dilinde testler. Bu dizin, şu durumlarda zaten mevcuttur:
yeni bir proje oluşturduğunuzu ve örnek bir araçlı test bulunduğunu göreceksiniz.
Başlamadan önce AndroidX Test API'lerini eklemeniz gerekir. Bu API'ler:
uygulamalarınız için araçlı test kodu derleyip çalıştırın. AndroidX Testi, bir
JUnit 4 test çalıştırıcısı, AndroidJUnitRunner
ve işlevsel kullanıcı arayüzü testleri için API'ler
(ör. Espresso, Kullanıcı Arayüzü Otomatikleştirici ve Test oluştur)
Ayrıca, uygulamanızın Android testi bağımlılıklarını test çalıştırıcısını ve AndroidX Test tarafından sağlanan kural API'lerini kullanın.
Uygulamanızın üst düzey build.gradle
dosyasında bu kitaplıkları belirtmeniz gerekir
bir örneği inceleyelim:
dependencies {
androidTestImplementation "androidx.test:runner:$androidXTestVersion"
androidTestImplementation "androidx.test:rules:$androidXTestVersion"
// Optional -- UI testing with Espresso
androidTestImplementation "androidx.test.espresso:espresso-core:$espressoVersion"
// Optional -- UI testing with UI Automator
androidTestImplementation "androidx.test.uiautomator:uiautomator:$uiAutomatorVersion"
// Optional -- UI testing with Compose
androidTestImplementation "androidx.compose.ui:ui-test-junit4:$compose_version"
}
En son sürümleri AndroidX Sürüm Notları'nda ve Oluşturma Kullanıcı Arayüzü Sürüm Notları.
JUnit 4 test sınıflarını kullanmak ve test filtreleme gibi özelliklere erişmek için
varsayılan test aracı olarak AndroidJUnitRunner'ı belirttiğinizden emin olun
aşağıdaki ayarı uygulamanızın içindekilere ekleyerek
modül düzeyindeki build.gradle
dosyası:
android {
defaultConfig {
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
}
Araçlı test sınıfı oluşturma
Araçlı test sınıfınız şuna benzer bir JUnit 4 test sınıfı olmalıdır: yerel testlerin nasıl oluşturulacağı ile ilgili bölümde açıklanan sınıfa uygun olmalıdır.
Araçlı bir JUnit 4 test sınıfı oluşturmak için AndroidJUnit4
değerini
test aracını kullanın.
Aşağıdaki örnekte, doğrulama işlemi için araçlı testi nasıl yazabileceğiniz gösterilmektedir
Ayrıştırılabilir arayüzünün
LogHistory
sınıf:
Kotlin
import android.os.Parcel import android.text.TextUtils.writeToParcel import androidx.test.filters.SmallTest import androidx.test.runner.AndroidJUnit4 import com.google.common.truth.Truth.assertThat import org.junit.Before import org.junit.Test import org.junit.runner.RunWith const val TEST_STRING = "This is a string" const val TEST_LONG = 12345678L // @RunWith is required only if you use a mix of JUnit3 and JUnit4. @RunWith(AndroidJUnit4::class) @SmallTest class LogHistoryAndroidUnitTest { private lateinit var logHistory: LogHistory @Before fun createLogHistory() { logHistory = LogHistory() } @Test fun logHistory_ParcelableWriteRead() { val parcel = Parcel.obtain() logHistory.apply { // Set up the Parcelable object to send and receive. addEntry(TEST_STRING, TEST_LONG) // Write the data. writeToParcel(parcel, describeContents()) } // After you're done with writing, you need to reset the parcel for reading. parcel.setDataPosition(0) // Read the data. val createdFromParcel: LogHistory = LogHistory.CREATOR.createFromParcel(parcel) createdFromParcel.getData().also { createdFromParcelData: List<Pair<String, Long>> -> // Verify that the received data is correct. assertThat(createdFromParcelData.size).isEqualTo(1) assertThat(createdFromParcelData[0].first).isEqualTo(TEST_STRING) assertThat(createdFromParcelData[0].second).isEqualTo(TEST_LONG) } } }
Java
import android.os.Parcel; import android.util.Pair; import androidx.test.runner.AndroidJUnit4; import com.google.common.truth.Truth.assertThat; import java.util.List; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; // @RunWith is required only if you use a mix of JUnit3 and JUnit4. @RunWith(AndroidJUnit4.class) public class LogHistoryAndroidUnitTest { public static final String TEST_STRING = "This is a string"; public static final long TEST_LONG = 12345678L; private LogHistory mLogHistory; @Before public void createLogHistory() { mLogHistory = new LogHistory(); } @Test public void logHistory_ParcelableWriteRead() { // Set up the Parcelable object to send and receive. mLogHistory.addEntry(TEST_STRING, TEST_LONG); // Write the data. Parcel parcel = Parcel.obtain(); mLogHistory.writeToParcel(parcel, mLogHistory.describeContents()); // After you're done with writing, you need to reset the parcel for reading. parcel.setDataPosition(0); // Read the data. LogHistory createdFromParcel = LogHistory.CREATOR.createFromParcel(parcel); List<Pair<String, Long>> createdFromParcelData = createdFromParcel.getData(); // Verify that the received data is correct. assertThat(createdFromParcelData.size()).isEqualTo(1); assertThat(createdFromParcelData.get(0).first).isEqualTo(TEST_STRING); assertThat(createdFromParcelData.get(0).second).isEqaulTo(TEST_LONG); } }
Araçlı testleri çalıştırma
Araçlı testler gerçek cihazlar veya emülatörler üzerinde çalıştırılabilir. Android'de Aşağıdakileri nasıl yapacağınızı öğrenebilirsiniz:
Ek kaynaklar
Kullanıcı arayüzü testleri genellikle kullanıcı arayüzü. Espresso veya Compose Test gibi çerçeveleri kullanırlar. Öğrenmek için daha fazla bilgi için kullanıcı arayüzü testi kılavuzunu okuyun.
Araç testlerini kullanma hakkında daha fazla bilgi için aşağıdakilere bakın kaynaklar.