Saya baru mengenal dunia pengujian dan bahkan lebih dalam dunia pengujian Android. Saat melakukan penelitian tentang Robolectric yang membantu pengujian pada android, ada satu hal yang paling membingungkan saya. Terkadang di web saya melihat orang-orang menggunakan testCompile
kata kunci dalam ketergantungan skrip build gradle saat mereferensikan Robolectric sementara yang lain menggunakan androidTestCompile
. Tentu keduanya tidak bisa valid?
Adakah yang bisa menjelaskan perbedaan antara keduanya dan mana yang harus digunakan saat menggunakan Robolectric?
testCompile
konfigurasi. Dependensi yang ditambahkan keandroidTestCompile
konfigurasi hanya akan tersedia ke sumber di 'src / androidTest', yang sebenarnya dibuat ke dalam APK dan diterapkan pada perangkat.Untuk menjawab pertanyaan Anda - Gunakan testCompile untuk robolectric
mengapa, karena robolectric berjalan di JVM yang meniru semua perilaku perangkat android.
testCompile dan androidTestCompile adalah folder android "berdasarkan konvensi" yang digunakan gradle saat menjalankan tugas yang disediakan oleh plugin android.
androidTestDebug mengambil pengujian dari folder androidTest, testDebug mengambil pengujian dari folder pengujian,
Sekali lagi ini hanya dengan folder konvensi Anda dapat memberikan kumpulan sumber untuk konfigurasi ini
Catatan: espresso adalah perpustakaan yang luar biasa yang mencoba menjauh dari robolectric :)
sumber
// pengujian unit
testCompile 'junit:junit:4.12'
Kode di atas merupakan dependensi JUnit 4 dalam file build.gradle di android studio. Anda melihat bahwa ia memiliki testCompile, karena JUnit berjalan di JVM dan tidak memerlukan perangkat atau emulator untuk dijalankan. Itu juga berarti bahwa pengujian JUnit tidak akan memerlukan konteks aplikasi untuk dijalankan dan jika diperlukan, kami perlu "MENGEJAR" mereka.
// Pengujian Unit Insturmented
androidTestCompile('com.android.support.test:runner:0.5', { exclude group: 'com.android.support', module: 'support-annotations' })
Sekarang kita lihat androidTestCompile disini, karena kali ini kita bermaksud menggunakan device atau emulator untuk test, yaitu Instrumentation testing. Untuk klarifikasi yang lebih baik saya sarankan untuk membaca dari developer.android.com
sumber
Untuk menambahkan Dependensi untuk pengujian JVM atau pengujian Unit (pengujian yang hanya mengandalkan lingkungan java, kami tidak memerlukan lingkungan android).
Kami Menggunakan direktif testCompile. Contoh:
dependencies { testCompile gradleTestKit() }
Untuk menambahkan Dependensi untuk uji Instrumentasi (Pengujian tersebut terutama bergantung pada lingkungan Android), kami menggunakan
androidTestCompile
direktif.sumber