Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Apakah ada alternatif untuk hamcrest yang bekerja lebih baik dengan mockito


Apakah ada alternatif untuk hamcrest yang bekerja lebih baik dengan mockito


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 bawaan

mockito

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