Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Apa perbedaan utama antara pencocokan mockito dan pencocokan hamcrest


Apa perbedaan utama antara pencocokan mockito dan pencocokan hamcrest


Pencocokan mockito dan pencocokan Hamcrest keduanya digunakan di Java untuk membuat pernyataan uji, tetapi mereka melayani tujuan yang berbeda dan memiliki karakteristik yang berbeda.

Pencocokan mockito

Pencocokan mockito terutama digunakan untuk mengatur harapan atau verifikasi saat bekerja dengan objek tiruan. Pencocokan ini mengembalikan jenis objek yang dicocokkan, yang memungkinkan mereka digunakan secara langsung sebagai argumen dalam metode panggilan pada objek tiruan. Misalnya, `org.mockito.matchers.any (integer.class)` Mengembalikan `integer`, membuatnya cocok untuk digunakan dalam metode yang terendam atau verifikasi, seperti` ketika (mockfoo.getBarbyIndex (apapun (integer.class))) `[1].

Pencocokan mockito dirancang untuk bekerja mulus dengan kerangka kerja mengejek Mockito, memungkinkan Anda untuk mendefinisikan ekspektasi yang fleksibel untuk panggilan metode pada objek tiruan. Namun, mereka biasanya tidak digunakan dengan pernyataan `assertthat`, yang lebih umum dikaitkan dengan hamcrest.

Pencocokan Hamcrest

Pencocokan Hamcrest, di sisi lain, dirancang untuk digunakan dengan pernyataan `assertthat` untuk menegaskan kondisi dalam pengujian. Mereka mengembalikan objek `pencocokan`, yang merupakan predikat yang dapat digunakan untuk mengevaluasi apakah suatu kondisi terpenuhi. Pencocokan Hamcrest sangat fleksibel dan dapat digabungkan menggunakan operator logis seperti `allof`,` anyof`, dan `tidak` untuk membuat pernyataan kompleks [2] [3].

Pencocokan Hamcrest banyak digunakan bersama dengan JUnit dan kerangka pengujian lainnya untuk menulis pernyataan uji yang jelas dan dapat dibaca. Mereka memberikan API yang fasih yang membuat kode tes lebih mendokumentasikan diri dan lebih mudah dipahami. Misalnya, `assertThat (" hello ", equalto (" hello "))` dengan jelas mengomunikasikan maksud dari pernyataan [7].

integrasi antara mockito dan hamcrest

Dalam kasus di mana Anda ingin menggunakan pencocokan Hamcrest dalam konteks yang membutuhkan pencocokan mockito (mis., Menghentikan atau memverifikasi panggilan metode), Mockito menyediakan metode `argthat`. Metode ini memungkinkan Anda untuk membungkus pencocokan Hamcrest dan menggunakannya sebagai pencocokan mockito. Misalnya, `when (mockfoo.getbarbydouble (argthat (closeto (1.0, 0.001))))` menggunakan pencocokan hamcrest untuk menentukan kondisi untuk nilai ganda dengan beberapa presisi [1] [5].

Dalam Mockito 2 dan yang lebih baru, integrasi dengan Hamcrest ditangani melalui kelas `mockitohamrest`, yang menyediakan metode` argthat` yang dirancang khusus untuk bekerja dengan pencocokan hamcrest [5] [10]. Decoupling ini membantu menghindari konflik versi antara perpustakaan Mockito dan Hamcrest.

Singkatnya, pencocokan mockito terutama digunakan untuk mengejek dan menepuk, sementara pencocokan Hamcrest digunakan untuk pernyataan. Keduanya dapat digunakan bersama secara efektif dalam pengujian dengan memanfaatkan metode `argthat` untuk mengintegrasikan pencocokan Hamcrest ke dalam kerangka kerja mengejek Mockito.

Kutipan:
[1] https://stackoverflow.com/questions/8348046/mockitos-matcher-vs-hamcrest-catcher
[2] https://www.javacodegeeks.com/2015/11/hamcrest-matchers-tutorial.html
[3] https://www.vogella.com/tutorials/hamcrest/article.html
[4] https://support.intershop.com/kb/go.php/a/enfdevdoc/pages/1827636063/guide+-+7.10+ migrasi+mockito+1+++mockito+2
[5] https://site.mockito.org/javadoc/current/org/mockito/hamcrest/mockitohamrest.html
[6] https://www.baeldung.com/hamcrest-text-catchers
[7] https://automatenow.io/complete-guide-to-hamcrest-matchers/
[8] https://www.scalatest.org/scaladoc/3.0.7/org/scalatest/matchers.html
[9] https://hamcrest.org/javahamcrest/tutorial
[10] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.hamcrest.mockitohamrest.argthat