Saat ngoding kita tentu harus menguji kodingan kita terlebih dahulu agar kita bisa tau kodingan kita benar atau error. tidak terkecuali saat ngoding aplikasi Android. mungkin kebanyakan dari kita melakukan pengujian aplikasi Android secara manual dengan melakukan prosedur yang telah kita tentukan secara berulang ulang, hal ini sebenarnya cukup melelahkan dan seringkali membuat kita jenuh.
mungkin sebagian dari kita tidak tau kalau kita bisa melakukan pengujian secara programmatically yang membuat kita bisa melakukan pengujian hanya dengan menekan tombol run lalu sistem sendiri yang melakukan pengujian sesuai dengan instruksi yang telah kita berikan.
Unit Testing
Unit Testing adalah pengujian unit-unit yang membentuk aplikasi. unit tersebut adalah fungsi-fungsi yang ada pada aplikasi, seperti contohnya jika kita membuat suatu class utility untuk menghitung luas balok maka kita bisa melakukan pengecekan hasil nya dengan unit testing tanpa perlu kita run aplikasi nya terlebih dahulu. unit testing tidak hanya ada di Android saja, di pemrograman lainnya juga ada Unit Testing.
untuk mempelajari lebih lanjut tentang Unit Testing bisa klik disini
sekarang kita coba mengimplementasikannya pada Android Studio.
sebelum memulai pastikan library JUnit sudah terpasang di project.
testImplementation 'junit:junit:4.13.2'
kalau sudah kita lanjutkan. kita buat class baru, dan didalamnya ada fungsi untuk menghitung balok
lalu arahkan kursor ke nama class, klik Alt + Enter, lalu klik Create Test
pada Testing Library pilih JUnit4. lalu klik OK
lalu untuk Destination Directory kita pilih app/src/test
karena disini kita akan melakukan Unit Testing, sedangkan directory app/src/androidTest untuk Instrumentation Testing
setelah itu akan muncul class baru dengan nama BangunRuangUtilsTest. lalu isi dengan kode sebagai berikut :
disitu ada 2 annotation, yaitu @Before dan @Test. apa bedanya untuk keduanya ?
@Before adalah kode yang dieksekusi sebelum testing berjalan, seperti inisialisasi variabel atau melakukan suatu instruksi. sedangkan @Test adalah kode testingnya.
sekarang kita coba untuk run dengan klik kiri ke icon sebelah kiri nama class, lalu klik Run BangunRuangTest
tunggu prosesnya hingga selesai. Unit Testing tidak memerlukan Device / Emulator karena Unit Testing berjalan pada JVM PC / Laptop kita. bagaimana hasilnya saat di run ?
taraa hasilnya error, Test failed. kenapa bisa ? karena nilai ekspektasi dan nilai sebenarnya tidak sama. disitu nilai ekspektasi 50 dan nilai sebenarnya 125. lantas apakah koding kita yang salah ? sepertinya tidak, disini saya yang salah memberikan nilai ekspektasi. jika dihitung di kalkulator 5*5*5 hasilnya memang 125.
fungsi dari assertEquals adalah memeriksa nilai yang dihasilkan dari fungsi apakah sama dengan nilai ekspektasi kita atau tidak.
sekarang kita coba merubah nilai ekspektasi nya ke 125 lalu kira run lagi
maka hasilnya jadi warna hijau, bukan warna merah lagi. tandanya Test kita berhasil dan tidak ada error.
kita dapat menambahkan test sebanyak yang kita mau, dan boleh melakukan lebih dari satu pengecekan pada satu fungsi. akan ditampilkan fungsi test mana yang sukses dan yang gagal.
untuk melihat pengecekan lain selain assertEquals bisa dilihat disini
bagaimana cukup mudah bukan ? kita bisa melakukan pengecekan fungsi-fungsi yang telah kita buat dengan lebih mudah dan cepat daripada testing manual. kita bahkan bisa membuat infrastruktur CI/CD Android dengan Unit Testing.
Oh iya unit testing tidak bisa digunakan untuk function yang membutuhkan Context yaa, karena Context didapat dari device android, sedangkan saat menjalankan unit testing tidak memerlukan device android.
selain Unit Testing ada satu lagi testing otomatis di Android yaitu Instrumentation Testing yang akan kita bahas di postingan selanjutnya, stay tune di Blog ini.
Semoga Postingan ini dapat bermanfaat bagi Teman-Teman Sekalian.
Terima Kasih sudah mampir.