Untuk tes instrumentasi yang saya gunakan
@RunWith(AndroidJUnit4.class)
dari
import androidx.test.runner.AndroidJUnit4;
untuk menetapkan kasus pengujian saya. Sekarang jalur ini akan ditandai sebagai usang dengan petunjuk untuk menggunakan AndroidJUnit4
dari
import androidx.test.ext.junit.runners.AndroidJUnit4
Namun jika saya mencoba mengimpor AndroidJUnit4
dari paket bernama saya mendapatkan kesalahan, itu ext
tidak dapat diselesaikan.
Apakah Anda punya ide, paket apa yang harus dimasukkan dalam gradle untuk menyelesaikan masalah ini?
android
junit
android-testing
androidx
Marcel Gangwisch
sumber
sumber
Jawaban:
Menurut dokumentasi untuk AndroidJUnit4 ,
File gradle harus berisi baris berikut:
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
Ubah kelas tes menjadi
AndroidJUnit4ClassRunner
dariAndroidJUnit4
Jika masih tidak berhasil, pastikan Anda membersihkan dan / atau membangun kembali proyek Anda. Anda juga dapat memeriksa versi saat ini secara langsung di repositori pakar Google
sumber
Jika Anda sudah mencoba solusi @ MarcelGangwisch dan bangunan Anda gagal mengatakan tidak dapat menemukan sumber daya DAN Anda juga membersihkan / membangun kembali proyek Anda dan itu masih tidak berhasil, coba ini: (berdasarkan juga pada solusi @ KrzysztofDziuba)
Di file gradle tempat Anda mengubah dependensi, pastikan Anda menambahkannya sebagai tipe yang Anda butuhkan, yaitu .:
Untuk tes UI:
Untuk tes Unit:
Dalam contoh saya, saya menambahkannya sebagai keduanya dan sekarang berfungsi.
sumber
Larutan
Tambahkan baris ini ke build.gradle:
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
Ubah
AndroidJUnit4
keAndroidJUnit4ClassRunner
dalam kelas tesPeringatan
Saya mendapat kesalahan yang sama, tetapi solusi berikut gagal untuk saya:
File -> Cache Tidak Valid ..., dan pilih Valid dan Restart
sumber
Bagi saya langkah-langkah berikut berhasil:
1. Ganti pustaka androidx dengan yang diposkan di sini . akhir saya
app/build.gradle
terlihat seperti ini:Saya kemudian secara manual mengganti modul yang diimpor di
ExampleInstrumentTest.java
kelas saya dengan kelas terbaru:Hal yang menggangguku adalah fakta bahwa
InstrumentationRegistery
kelas masih usang. Jadi saya gunakanInstrumentationRegistry.getInstrumentation().getTargetContext();
dariandroidx.test.platform.app.InstrumentationRegistry
kelas.sumber
@RunWith(AndroidJUnit4ClassRunner.class)
adalah bagian yang menyelesaikan masalah dalam kasus saya. Saya tidak begitu mengerti mengapa android studio terkadang menghasilkan kode yang sudah usang.ApllicationProvider.getApplicationContext<Context>()
sebagai gantiInstrumentationRegistry.getInstrumentation().getTargetContext();
Saya mencoba semua yang diberikan di atas sampai saya pergi ke situs Android resmi, dan mereka menyarankan mengimpor dari pada
androidx.test.ext.junit.runners.AndroidJUnit4
bukanandroidx.test.runner.AndroidJUnit4
. tautansumber
Dalam kasus saya berubah
androidTestImplementation
menjaditestImplementation
membantu. Saya tidak tahu perbedaannya sebelum membaca perbedaan Android ini antara testImplementation dan androidTestImplementation di build.gradlesumber
Jika Anda mengimpor pustaka tes AnroidX itu, menyinkronkan dan membangun kembali proyek, tetapi paket yang diimpor masih belum terselesaikan. Ingat saja bagaimana Anda meningkatkan proyek Anda ke AndroidX, tutup Android Studio dan hapus
.idea
folder dan buka kembali proyek Anda lagi ...Ini berhasil untuk saya!
sumber
Sertakan baris ini dalam modul aplikasi build.gradle.
testImplementation 'androidx.test.ext: junit: 1.1.1' androidTestImplementation 'androidx.test.ext: junit: 1.1.1'
Di kelas tes, ganti pelari tes Anda menjadi
impor androidx.test.ext.junit.runners.AndroidJUnit4;
Jika
InstrumentationRegistry.getTargetContext()
sudah usang gunakanInstrumentationRegistry
dariandroidx.test.platform.app
seperti iniInstrumentationRegistry.getInstrumentation (). GetTargetContext ()
sumber