Belajar Android TDD ( Test Driven Development) part 2

Untuk case lanjutan kali ini kita akan lanjutkan dengan Mocking & Integration testing. Jangan lupa untuk yang belum baca part 1 buka di link ini.

Ok lanjut buat interface dengan nama ArtikelView.

Dan selanjutnya untuk di presenter tambahkan code seperti berikut ini

Nah sekarang kita akan melakukan skema test nya. Perhatikan code di atas, kita menambahkan ArtikelView ke dalam constructor ArtikelPresenter.

public ArtikelPresenter(ArtikelView artikelView) {
this.artikelView = artikelView;
}

Untuk itu kita memerlukan parameter artikelView. Untuk di dalam class ArtikelPresenterTest kita memerlukan object artikelView. Disini kita akan menggunakan Mockito untuk membuat object artikelView.

Seperti biasa tambahkan melalui library dependency grdle.

Selanjutnya kita kembali ke class ArtikelPresenterTest untuk melakukan test Driven Development. Pertama — tama tambahkan code seperti berikut di class ArtikelPresenterTest.

Pada test cases kali ini kita akan melakukan test untuk method createArtikel(). Nah kemudian kita melakukan verify pada method isSuccesValidateForm() dan showEmptyInputMessage().

Jadi ketika method createArtikel(“”,””,””) dijalankan maka akan meng eksekusi isSuccesValidateForm(“”,””,””) & showEmptyInputMessage(“”).

Sekaran jalankan test dan kita akan menerima pesan error seperti ini.

Nah disini kita mendapatkan 2 error dari 2 method yang kita cek kebenaranya. Kita bahas yang pertama

Pada gambar di atas ada keterangan Wanted but not invoked: untuk method isSuccesValidateForm().

Maksud dari keterangan ini adalah method isSuccessValidateForm() tidak di eksekusi.

Kemudian dibawahnya ada keterangan However, there were other interactions with this mock: Yang memberitahukan bahwa method yang di eksekusi adalah

artikelView.showEmptyInputMessage(
"Field Judul is empty!"
);

Error ini terjadi ketika verify(artikelView).isSuccesValidateForm(“”, “”, “”) di jalankan.

Untuk error yang kedua ini sama seperti yang pertama, maksud dan keteranganya. Lalu kenapa ada dua error yang sama? Nah untuk yang ini terjadi karena method verify(artikelView).showEmptyInputMessage(“”) dieksekusi. Masih terjadi error yang sama karna method yang di eksekusi adalah

artikelView.showEmptyInputMessage(
"Field Judul is empty!"
);

bukan lah yang ini

verify(artikelView).showEmptyInputMessage("");

Sekarang kita coba percobaan yang tidak akan menghasilkan error. Kita coba akan test code ini

Ketika di run maka akan benar dan hasilnya seperti di bawah ini.

Dan selanjutnya silahkan teman — teman melakukan percobaan error yang lebih banyak agar lebih paham dengan apa yang di jalankan oleh test. Intinya buat lah percobaan error kemudian lakukan solve error dan refactoring codenya. Jadi untuk melakukan test jangan lupa untuk melakukan 3 proses input, proses dan output. Selanjutnya di Part 3 kita akan melakukan test dengan Espresso untuk UI testing.