Apakah ada yang tahu bagaimana Anda bisa mendapatkan konteks proyek Uji dalam kasus uji junit Android (meluas AndroidTestCase).
Catatan: Tes ini BUKAN tes instrumentasi.
Catatan 2: Saya memerlukan konteks proyek uji, bukan konteks aplikasi sebenarnya yang diuji.
Saya memerlukan ini untuk memuat beberapa file dari aset dari proyek pengujian.
Jawaban:
Ada pendekatan baru dengan Pustaka Dukungan Pengujian Android (saat ini
androidx.test:runner:1.1.1
). Contoh update Kotlin:Jika Anda juga ingin menjalankan konteks aplikasi:
Contoh berjalan penuh: https://github.com/fada21/AndroidTestContextExample
Lihat di sini: Apa perbedaan antara getTargetContext () dan getContext (di InstrumentationRegistry)?
sumber
compile "com.android.support.test:runner:1.0.1"
ke gradle AndaInstrumentationRegistry.getInstrumentation().context
saja.Setelah beberapa penelitian, satu-satunya solusi yang berfungsi tampaknya adalah solusi yang sudah ditunjukkan Yorkw. Anda harus memperluas InstrumentationTestCase lalu Anda bisa mengakses konteks aplikasi pengujian Anda menggunakan getInstrumentation (). GetContext () - berikut ini cuplikan kode singkat menggunakan saran di atas:
sumber
Seperti yang Anda baca di kode sumber AndroidTestCase ,
getTestContext()
metode ini disembunyikan.Anda dapat melewati
@hide
anotasi menggunakan refleksi.Cukup tambahkan metode berikut di Anda
AndroidTestCase
:Kemudian telepon
getTestContext()
kapan saja Anda mau. :)sumber
java.lang.NoSuchMethodException: android.test.ServiceTestCase.getTestContext()
Pembaruan:
AndroidTestCase
Kelas ini tidak digunakan lagi di API level 24. GunakanInstrumentationRegistry
sebagai gantinya. Pengujian baru harus ditulis menggunakan Android Testing Support Library. Tautan ke pengumumanAnda harus memperluas dari AndroidTestCase, bukan TestCase.
Ikhtisar Kelas AndroidTestCase
Perluas ini jika Anda perlu mengakses Sumber Daya atau hal lain yang bergantung pada Konteks Aktivitas.
AndroidTestCase - Pengembang Android
sumber
Jika Anda ingin mendapatkan konteksnya dengan Kotlin dan Mockito, Anda dapat melakukannya dengan cara berikut:
Saya harap ini membantu Anda
sumber
Ini adalah cara yang benar untuk mendapatkan Konteks. Metode lain sudah tidak digunakan lagi
sumber
sumber
Bagi mereka yang mengalami masalah ini saat membuat tes otomatis, Anda harus melakukan ini:
sumber
Jawaban lainnya sudah ketinggalan zaman. Sekarang, setiap kali Anda memperluas AndroidTestCase, ada objek Konteks mContext yang dapat Anda gunakan.
sumber