Menggunakan mockitohamcrest atas pencocokan hamcrest tradisional menawarkan beberapa keuntungan, terutama ketika bekerja dengan mockito untuk mengejek dalam tes unit. Inilah manfaat utamanya:
1. Integrasi dengan Mockito: Mockitohamcrest memungkinkan Anda untuk mengintegrasikan pencocokan Hamcrest dengan mulus dengan kerangka kerja mengejek Mockito. Integrasi ini sangat penting untuk menyiapkan stubs atau memverifikasi panggilan metode dengan pencocokan argumen yang kompleks, yang tidak secara langsung didukung oleh pencocokan hamcrest tradisional saja. Misalnya, Anda dapat menggunakan `mockitohamcrest.Argthat` untuk mengubah pencocokan Hamcrest menjadi pencocokan mockito, memungkinkan Anda untuk menggunakan serangkaian korek api Hamcrest yang kaya dalam konteks mockito [1] [10] [12].
2. Menghindari ketidakcocokan versi: Mockito dipisahkan dari Hamcrest di versi 2.1.0 untuk menghindari ketidakcocokan versi yang telah menyebabkan masalah bagi pengguna di masa lalu. Mockitohamcrest menyediakan cara untuk menggunakan pencocokan Hamcrest tanpa digabungkan erat dengan versi hamcrest tertentu, sehingga mengurangi potensi konflik [1] [10].
3. Fleksibilitas dalam pencocokan argumen: Mockitohamcrest memungkinkan Anda untuk menggunakan pencocokan fleksibel dan ekspresif Hamcrest untuk mendefinisikan skenario pencocokan argumen yang kompleks. Ini sangat berguna ketika Anda perlu memverifikasi bahwa metode dipanggil dengan argumen yang sesuai dengan kondisi tertentu, seperti string yang mengandung substring atau angka spesifik dalam rentang tertentu [4] [12].
4. Peningkatan keterbacaan dan kode pendokteran diri: Dengan menggunakan pencocokan Hamcrest melalui mockitohamrest, tes Anda dapat tetap mendokumentasikan diri dan mudah dibaca. Pencocokan dengan jelas mengekspresikan maksud tes, memudahkan pengembang untuk memahami apa yang sedang diuji tanpa memerlukan komentar tambahan [3] [9].
5. Pesan kesalahan yang lebih baik: Ketika pernyataan gagal, Hamcrest menyediakan pesan kesalahan yang terperinci dan bermakna, yang secara signifikan dapat membantu dalam debugging. Ini sangat bermanfaat ketika menggunakan mockitohamcrest, karena membantu mengidentifikasi mengapa verifikasi tiruan gagal, membuatnya lebih mudah untuk mendiagnosis masalah [3] [9].
6. Kustomisasi dan ekstensibilitas: API pencocokan Hamcrest memungkinkan Anda untuk membuat pencocokan khusus yang disesuaikan dengan kebutuhan pengujian spesifik Anda. Ketika dikombinasikan dengan mockitohamcrest, ekstensibilitas ini memungkinkan Anda untuk menulis tes yang lebih bertarget dan ekspresif yang sesuai dengan logika aplikasi Anda [6] [9].
Singkatnya, Mockitohamrest menawarkan kombinasi yang kuat dari kemampuan mengejek Mockito dengan pencocokan fleksibel dan ekspresif Hamcrest, meningkatkan keterbacaan uji, fleksibilitas, dan pemeliharaan.
Kutipan:[1] https://site.mockito.org/javadoc/current/org/mockito/hamcrest/mockitohamcrest.html
[2] https://stackoverflow.com/questions/20441594/mockito-and-hamcrest-how-to-verify-invocation-of-collection-argument
[3] https://automatenow.io/complete-guide-to-hamcrest-matchers/
[4] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.hamcrest.mockitohamrest.mockitohamrest
[5] https://www.javadoc.io/doc/org.mockito/mockito-core/2.2.9/org/mockito/argumentmatcher.html
[6] https://www.javacodegeeks.com/2015/11/custom-hamcrest-matchers.html
[7] https://www.lambdatest.com/automation-testing-advisor/selenium/classes/org.mockito.hamcrest.mockitohamrest
[8] https://site.mockito.org/javadoc/current/index.html?org%2fmockito%2FargumentMatcher.html
[9] https://www.vogella.com/tutorials/hamcrest/article.html
[10] https://weblab.tudelft.nl/docs/mockito/3.10/org/mockito/hamcrest/mockitohamcrest.html
[11] https://truth.dev/comparison.html
[12] https://stackoverflow.com/questions/8348046/mockitos-matcher-vs-hamcrest-catcher