Saat bekerja dengan mockito, Hamcrest sering digunakan untuk pencocokan ekspresifnya, yang meningkatkan keterbacaan tes. Namun, ada alternatif yang dapat bekerja dengan baik dengan mockito, masing -masing dengan kekuatan dan kelemahan mereka sendiri.
Assertj
AssertJ adalah alternatif populer untuk Hamcrest untuk menulis pernyataan dalam tes unit. Ini memberikan API fasih yang banyak pengembang lebih mudah digunakan dan lebih ekspresif daripada Hamcrest. Sintaks AssertJ sering lebih disukai karena keterbacaannya dan kemampuan untuk dengan mudah membuat pernyataan khusus. Sementara AssertJ tidak secara langsung berintegrasi dengan mockito seperti yang dilakukan Hamcrest, itu dapat digunakan bersama mockito untuk pernyataan, membuat tes lebih mudah dibaca dan dipertahankan. Namun, AssertJ terutama difokuskan pada pernyataan daripada kemampuan pencocokan yang lebih luas dari Hamcrest [1] [3].
Kebenaran
Kebenaran adalah perpustakaan pernyataan lain yang dikembangkan oleh Google. Ini menawarkan API yang fasih mirip dengan AssertJ tetapi lebih fokus pada memberikan dukungan pelengkap otomatis yang lebih baik di IDE, yang dapat bermanfaat untuk menemukan pernyataan yang tersedia. Kebenaran tidak biasa digunakan dengan mockito sebagai hamcrest tetapi dapat digunakan untuk pernyataan dalam tes. Seperti AssertJ, kebenaran lebih fokus pada pernyataan daripada pencocokan tujuan umum yang disediakan Hamcrest [3].
Pencocokan bawaanmockito
Mockito sendiri memberikan pencocokan yang dapat digunakan untuk menanggalkan dan memverifikasi interaksi dengan objek tiruan. Pencocokan ini mengembalikan tipe yang mereka cocokkan (mis., `Any (integer.class)` mengembalikan `integer`), yang berbeda dari pencocokan Hamcrest yang mengembalikan` pencocokan`. Untuk menggunakan pencocokan Hamcrest dengan mockito, Anda dapat menggunakan `argthat` atau` mockitohamrest.Argthat` untuk mengubah pencocokan hamcrest menjadi bentuk yang kompatibel dengan mockito [7].
Implementasi Kustom
Untuk skenario di mana Anda lebih suka tidak menggunakan pustaka eksternal, Anda dapat menerapkan pencocokan atau pernyataan Anda sendiri. Pendekatan ini memungkinkan kontrol penuh atas perilaku dan sintaks tetapi membutuhkan lebih banyak upaya dan pemeliharaan. Biasanya tidak disarankan kecuali Anda memiliki kebutuhan yang sangat spesifik yang tidak dipenuhi oleh perpustakaan yang ada.
Kesimpulan
Sementara Hamcrest banyak digunakan dengan mockito karena fleksibilitas dan ekspresifnya, alternatif seperti AssertJ dan kebenaran dapat meningkatkan bagian pernyataan dari tes Anda. Jika Anda mencari sesuatu yang terintegrasi dengan mockito untuk tujuan yang cocok, Hamcrest tetap menjadi pilihan yang kuat, tetapi Anda dapat menggunakan pencocokannya di samping perpustakaan pernyataan lainnya untuk pengalaman pengujian yang lebih komprehensif. Pada akhirnya, pilihan tergantung pada kebutuhan dan preferensi spesifik Anda mengenai keterbacaan, kemudahan penggunaan, dan jenis pernyataan atau kecocokan yang perlu Anda lakukan dalam tes Anda.
Kutipan:[1] https://www.reddit.com/r/java/comments/nj7dvd/who_here_are_using_the_hamcrest_api_and_why/
[2] https://www.javacodegeeks.com/2015/11/hamcrest-matchers-tutorial.html
[3] https://truth.dev/comparison.html
[4] https://www.reddit.com/r/javahelp/comments/oqz8cn/unit_testing_with_mockito_framework_why_do_we/
[5] https://www.infoworld.com/article/2257253/junit-5-tutorial-part-1-unit-testing-with-junit-5-mockito-and-hamcrest.html
[6] https://softwareEngineering.stackexchange.com/questions/447953/alternatives-to-ge-mock-libraries-such-as-mockito-in-unit-testing
[7] https://stackoverflow.com/questions/8348046/mockitos-matcher-vs-hamcrest-catcher
[8] https://stackoverflow.com/questions/12606196/what-is-the-alternative-to-ge-ge-the-deprecated-hamcrest-method-is