Menyiapkan project untuk AndroidX Test

AndroidX Test adalah kumpulan library Jetpack yang memungkinkan Anda menjalankan pengujian terhadap aplikasi Android. Panduan ini juga menyediakan serangkaian alat untuk membantu Anda menulis pengujian ini.

Misalnya, AndroidX Test menyediakan aturan JUnit4 untuk memulai aktivitas dan berinteraksi dengannya dalam pengujian JUnit4. Alat ini juga berisi framework Pengujian UI seperti Espresso, UI Automator, dan simulator Robolectric.

Menambahkan library AndroidX Test

Untuk menggunakan AndroidX Test, Anda harus memodifikasi dependensi project aplikasi dalam lingkungan pengembangan Anda.

Menambahkan dependensi Gradle

Untuk mengubah dependensi project aplikasi Anda, selesaikan langkah-langkah berikut:

  • Langkah 1: Buka file build.gradle untuk modul Gradle Anda.
  • Langkah 2: Di bagian repositori, pastikan repositori Maven Google muncul:
  allprojects {
    repositories {
      jcenter()
      google()
    }
  }
  • Langkah 3: Untuk setiap paket AndroidX Test yang ingin Anda gunakan, tambahkan nama paketnya ke bagian dependensi. Misalnya, untuk menambahkan paket espresso-core, tambahkan baris berikut:

Groovy

dependencies {
        ...
        androidTestImplementation "androidx.test.espresso:espresso-core:$espressoVersion"
    }

Kotlin

dependencies {
        ...
        androidTestImplementation('androidx.test.espresso:espresso-core:$espressoVersion')
    }

Berikut adalah dependensi AndroidX Test paling umum yang tersedia:

Groovy

dependencies {
    // Core library
    androidTestImplementation "androidx.test:core:$androidXTestVersion0"

    // AndroidJUnitRunner and JUnit Rules
    androidTestImplementation "androidx.test:runner:$testRunnerVersion"
    androidTestImplementation "androidx.test:rules:$testRulesVersion"

    // Assertions
    androidTestImplementation "androidx.test.ext:junit:$testJunitVersion"
    androidTestImplementation "androidx.test.ext:truth:$truthVersion"

    // Espresso dependencies
    androidTestImplementation "androidx.test.espresso:espresso-core:$espressoVersion"
    androidTestImplementation "androidx.test.espresso:espresso-contrib:$espressoVersion"
    androidTestImplementation "androidx.test.espresso:espresso-intents:$espressoVersion"
    androidTestImplementation "androidx.test.espresso:espresso-accessibility:$espressoVersion"
    androidTestImplementation "androidx.test.espresso:espresso-web:$espressoVersion"
    androidTestImplementation "androidx.test.espresso.idling:idling-concurrent:$espressoVersion"

    // The following Espresso dependency can be either "implementation",
    // or "androidTestImplementation", depending on whether you want the
    // dependency to appear on your APK’"s compile classpath or the test APK
    // classpath.
    androidTestImplementation "androidx.test.espresso:espresso-idling-resource:$espressoVersion"
}

Kotlin

dependencies {
    // Core library
    androidTestImplementation("androidx.test:core:$androidXTestVersion")

    // AndroidJUnitRunner and JUnit Rules
    androidTestImplementation("androidx.test:runner:$testRunnerVersion")
    androidTestImplementation("androidx.test:rules:$testRulesVersion")

    // Assertions
    androidTestImplementation("androidx.test.ext:junit:$testJunitVersion")
    androidTestImplementation("androidx.test.ext:truth:$truthVersion")

    // Espresso dependencies
    androidTestImplementation( "androidx.test.espresso:espresso-core:$espressoVersion")
    androidTestImplementation( "androidx.test.espresso:espresso-contrib:$espressoVersion")
    androidTestImplementation( "androidx.test.espresso:espresso-intents:$espressoVersion")
    androidTestImplementation( "androidx.test.espresso:espresso-accessibility:$espressoVersion")
    androidTestImplementation( "androidx.test.espresso:espresso-web:$espressoVersion")
    androidTestImplementation( "androidx.test.espresso.idling:idling-concurrent:$espressoVersion")

    // The following Espresso dependency can be either "implementation",
    // or "androidTestImplementation", depending on whether you want the
    // dependency to appear on your APK"s compile classpath or the test APK
    // classpath.
    androidTestImplementation( "androidx.test.espresso:espresso-idling-resource:$espressoVersion")
}

Halaman Catatan Rilis berisi tabel dengan versi terbaru per artefak.

Lihat Indeks Paket atau Indeks Kelas untuk dokumentasi referensi khusus tentang library ini.

Project yang menggunakan class yang tidak digunakan lagi

Jika aplikasi Anda menggunakan pengujian yang mengandalkan class android.test berbasis JUnit3 yang tidak digunakan lagi , seperti InstrumentationTestCase dan TestSuiteLoader, tambahkan baris berikut di bagian android file:

android {
    ...
    useLibrary 'android.test.runner'

    useLibrary 'android.test.base'
    useLibrary 'android.test.mock'
  }

Menambahkan deklarasi manifes

Untuk menjalankan pengujian yang mengandalkan class android.test berbasis JUnit3 yang tidak digunakan lagi, tambahkan elemen <uses-library> yang diperlukan ke manifes aplikasi pengujian Anda. Misalnya, jika Anda menambahkan pengujian yang bergantung pada library android.test.runner, tambahkan elemen berikut ke manifes aplikasi Anda:

<!-- You don't need to include android:required="false" if your app's

   minSdkVersion is 28 or higher. -->

<uses-library android:name="android.test.runner"

       android:required="false" />

Untuk menentukan library yang berisi class berbasis JUnit yang diberikan, lihat library berbasis JUnit.

Pertimbangan saat menggunakan class yang tidak digunakan lagi dan menargetkan Android 9 atau

lebih tinggi

Panduan dalam bagian ini hanya berlaku jika Anda menargetkan Android 9 (API level 28) atau yang lebih tinggi dan versi SDK minimum untuk aplikasi Anda ditetapkan ke Android 9.

Library android.test.runner secara implisit bergantung pada library android.test.base dan android.test.mock. Jika aplikasi Anda hanya menggunakan class dari android.test.base atau android.test.mock, Anda dapat menyertakan library itu sendiri:

<!-- For both of these declarations, you don't need to include
   android:required="false" if your app's minSdkVersion is 28
   or higher. -->

<uses-library android:name="android.test.base"
       android:required="false" />
<uses-library android:name="android.test.mock"
       android:required="false" />