Saya menulis Proyek Perpustakaan Android berdasarkan kelas Bitmap Android (sebut saja AndroindLib) yang hanya berisi kelas utilitas (tidak ada aktivitas). Saya mencoba mengujinya menggunakan Android JUnit, tetapi terus mengeluh bahwa tidak dapat menemukan AnroidLib.apk
Apa cara yang benar untuk menguji Unit Proyek Perpustakaan Android?
Jawaban:
Mengutip dokumentasi :
"Ada dua cara yang disarankan untuk menyiapkan pengujian pada kode dan sumber daya dalam proyek perpustakaan:
Anda dapat menyiapkan proyek uji yang melengkapi proyek aplikasi yang bergantung pada proyek perpustakaan. Anda kemudian dapat menambahkan pengujian ke proyek untuk fitur khusus pustaka.
Anda dapat menyiapkan proyek aplikasi standar yang bergantung pada pustaka dan meletakkan instrumentasi dalam proyek itu. Ini memungkinkan Anda membuat proyek mandiri yang berisi tes / instrumentasi dan kode untuk diuji. "
sumber
Dalam proyek pengujian Anda, cukup ubah nama paket sehingga sama dengan paket perpustakaan Anda. Misalnya, Anda memiliki pustaka yang paketnya adalah
"com.example.lib"
. Buat proyek uji yang menargetkan perpustakaan Anda. Dalam file manifes Anda akan melihatpackage="com.example.lib.test"
, dantargetPackage="com.example.lib"
. Ubah saja paket dari "com.example.lib.test" menjadi "com.example.lib" (targetPackage
biarkan apa adanya).Selain itu, pastikan library tersebut direferensikan ke project pengujian Anda BUKAN di jalur build Java, tetapi seperti library Android biasa: di Eclipse, library harus ditampilkan sebagai library di
Project->Properties->Android
tab, bukan diProject->Properties->Java Build Path
tab.Kemudian jalankan tes Anda.
sumber
http://www.paulbutcher.com/2010/09/android-library-project-with-tests-step-by-step/ membantu menjelaskan proses yang diperlukan untuk menerapkan saran kedua dalam jawaban CommonsWare
sumber
Sesuai dokumentasi :
Menguji modul perpustakaan sama dengan menguji aplikasi. Perbedaan utamanya adalah library dan dependensinya otomatis disertakan sebagai dependensi APK pengujian. Artinya, APK pengujian tidak hanya menyertakan kodenya sendiri, tetapi juga AAR library dan semua dependensinya. Karena tidak ada "aplikasi dalam pengujian" terpisah, tugas androidTest hanya menginstal (dan mencopot pemasangan) APK pengujian. Saat menggabungkan beberapa file manifes, Gradle mengikuti urutan prioritas default dan menggabungkan manifes library ke dalam manifes utama APK pengujian.
sumber
CATATAN: Solusi ini didasarkan pada penggunaan Eclipse Indigo (3.8.2) dan mungkin harus diimplementasikan sedikit berbeda untuk IDE lain meskipun prinsip dasarnya akan sama.
Saya memiliki masalah serupa dan saya menemukan bahwa melakukan hal berikut selalu berhasil:
( CATATAN: Petunjuk ini adalah untuk membangun grup proyek baru dari awal. Jika Anda telah membangun bagian-bagian dari grup proyek, Anda mungkin harus memodifikasi proyek Anda agar terhubung dengan cara yang sama. )
Anda akan mendapatkan tiga proyek (Perpustakaan Android, Aplikasi Tes Android, Penguji Perpustakaan Android) yang terlihat seperti ini:
Anda harus berakhir dengan kelas untuk menguji Perpustakaan Android Anda yang terlihat seperti ini:
Anda kemudian dapat menambahkan tes apa pun yang Anda inginkan. Anda tidak perlu merujuk Aplikasi Pengujian Android ("RemingtonAndroidToolsTestApp" dalam contoh ini) lebih lanjut untuk menjalankan pengujian Anda kecuali pengujian tersebut memerlukan akses ke komponen khusus Android (seperti folder Assets, misalnya). Jika Anda perlu mengakses komponen khusus Android, Anda dapat melakukannya dengan memodifikasi Aplikasi Pengujian Android ("RemingtonAndroidToolsTestApp" dalam contoh ini) dan kemudian mereferensikannya melalui instrumentasi yang disediakan oleh Android Junit API standar. (Anda dapat membaca lebih lanjut tentang itu di sini: http://developer.android.com/tools/testing/testing_android.html )
sumber
Jika kelas ulitiy Anda tidak bergantung pada kode khusus Android, Anda cukup menggunakan pengujian unit JUnit standar. Tidak perlu menggunakan versi Android.
sumber