Is it “Hard” to start Unit Testing in Kotlin?

Sedikit cerita tentang bagaimana memulai unit testing di Kotlin menggunakan Library MockK.io dari Oleksiy Pylypenko. Sulit gak sih, atau lebih tepatnya ribet gak sih memulai unit testing di Kotlin ini?

Yoga C. Pranata
Style Theory Engineering & Data
3 min readSep 22, 2018

--

Image from Ryan McGuire on Pixabay

Penting/Perlu gak sih membuat Unit Testing itu?

Banyak yang bilang kalau kita buat Unit Testing di aplikasi kita, berarti aplikasi kita sudah bisa dibilang free bugs, I don’t think so.

Dengan adanya Unit Testing bukan berarti menghilangkan peran Manual Testing. Karena User aplikasi kita adalah Manusia, which mean bukan robot. Jadi peran Unit Testing disini adalah meminimalisir bugs dan memastikan function maupun method yang kita buat sudah sesuai atau belum sebagaimana mestinya.

What is MockK?

Seperti yang dikatakan oleh Oleksiy Pylypenko diartikelnya,

It is a new open source library (github repository) focused on making mocking in Kotlin great.

How to Implement it?

Tambahkan di app/build.gradle Anda:

How to use MockK?

Saat kita membuat sebuah Unit Test dengan cara stubbing atau mocking, inti yang dimaksud adalah mengisolasi suatu fungsi kedalam suatu komponen, yang disebut System Under Test (SUT) dari Dependent On Components (DOC) mereka.

System Under Test (SUT) adalah suatu fungsi yang ingin kita test dengan harapan bisa berjalan dengan baik sesuai Test Scenario yang telah kita buat.

Dependent On Component (DOC) berfungsi sebagai kolaborator, dia adalah komponen atau data yang dibutuhkan untuk memenuhi kondisi-kondisi yang ada didalam SUT.

Supaya lebih memudahkan untuk memahami apa itu SUT dan DOC, coba lihat diagram dibawah ini:

Contoh penggambaran SUT dan DOC

Kalau dalam bentuk code-nya sebagai berikut:

Seperti yang terlihat diatas, didalam class Person terdapat satu fungsi showFullName(). Nah, fungsi tersebut yang dinamakan SUT.

Now, Let’s test it

Untuk memastikan apakah fungsi showFullName() mengembalikan value string sesuai dengan apa yang kita harapkan atau tidak, kita perlu menge-test nya.

Penjelasannya adalah:

Variabel yang kita define sebagai inputan, yang nantinya akan diuji apakah value dengan input sesuai.

Variabel mocked object dari Profile data class. Variabel ini yang kita sebut Dependent on Component (DOC).

Kita menginginkan hasil dari fullname adalah isi dari variabel fullnameTest, maksudnya adalah saat fungsi profile.fullname dieksekusi, hasil yang diharapkan adalah “Yoga C. Pranata” sebagai isi dari variabel tersebut.

Di baris ini kita eksekusi SUT dengan data yang sudah kita mock sebelumnya.

Kita test apakah fungsi showFullName() mengembalikan hasil yang kita harapkan. Maksudnya adalah disini fungsi showFullName() dieksekusi dengan input yang telah kita deklarasi, kemudian dicocokkan kembali dengan variabel fullnameTest.

Yeah, Simple just like that. Ini contoh sederhana dimana kita ingin memulai unit testing terutama menggunakan Kotlin.

Apakah sekarang kalian masih ragu untuk memulai unit testing?

Happy Coding :)

--

--