Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Sự khác biệt chính giữa các trình chỉnh sửa mockito và người mai mối Hamcrest là gì


Sự khác biệt chính giữa các trình chỉnh sửa mockito và người mai mối Hamcrest là gì


Các trình chỉnh sửa mockito và các trình chỉnh sửa Hamcrest đều được sử dụng trong Java để tạo các xác nhận thử nghiệm, nhưng chúng phục vụ các mục đích khác nhau và có các đặc điểm riêng biệt.

MOCKITO MATCHERS

Các trình chỉnh sửa Mockito chủ yếu được sử dụng để thiết lập các kỳ vọng hoặc xác minh khi làm việc với các đối tượng giả. Các trình kết hợp này trả về loại đối tượng được khớp, cho phép chúng được sử dụng trực tiếp làm đối số trong các cuộc gọi phương thức trên các đối tượng giả. Ví dụ: `org.mockito.matchers.any (integer. class)` trả về một `integer`, làm cho nó phù hợp để sử dụng trong phương pháp stubbing hoặc xác minh, chẳng hạn như` khi

Các trình chỉnh sửa mockito được thiết kế để hoạt động liền mạch với khung Mockito của Mockito, cho phép bạn xác định các kỳ vọng linh hoạt cho các cuộc gọi phương thức trên các đối tượng giả. Tuy nhiên, chúng thường không được sử dụng với các câu lệnh `assertthat`, thường được liên kết hơn với Hamcrest.

Hamcrest Matchers

Mặt khác, các trình chỉnh sửa Hamcrest được thiết kế để sử dụng với các câu lệnh `assertthat` để khẳng định các điều kiện trong các thử nghiệm. Họ trả về một đối tượng `matcher`, là một vị ngữ có thể được sử dụng để đánh giá xem một điều kiện có được đáp ứng hay không. Các trình kết hợp Hamcrest rất linh hoạt và có thể được kết hợp bằng cách sử dụng các toán tử logic như `allof`,` anyof` và `không 'để tạo ra các xác nhận phức tạp [2] [3].

Hamcrest Matchers được sử dụng rộng rãi kết hợp với JUnIT và các khung thử nghiệm khác để viết các xác nhận thử nghiệm rõ ràng và có thể đọc được. Họ cung cấp một API thông thạo làm cho mã kiểm tra tự tài liệu hơn và dễ hiểu hơn. Ví dụ: `assertThat (" Xin chào ", Equalto (" Xin chào "))` Truyền đạt rõ ràng ý định của khẳng định [7].

Tích hợp giữa Mockito và Hamcrest

Trong trường hợp bạn muốn sử dụng trình kết hợp Hamcrest trong bối cảnh yêu cầu trình kết hợp mockito (ví dụ: stubbing hoặc xác minh cuộc gọi phương thức), Mockito cung cấp phương thức `argthat`. Phương pháp này cho phép bạn bọc một trình kết hợp Hamcrest và sử dụng nó như một trình kết hợp mockito. Ví dụ: `khi (mockfoo.getbarbydouble (argthat (closeto (1.0, 0,001))))` sử dụng trình kết hợp Hamcrest để chỉ định một điều kiện cho giá trị kép với một số độ chính xác [1] [5].

Trong Mockito 2 trở lên, sự tích hợp với Hamcrest được xử lý thông qua lớp `mockitohamcrest`, cung cấp một phương pháp` argthat` được thiết kế đặc biệt để hoạt động với các trình chỉnh sửa Hamcrest [5] [10]. Sự tách rời này giúp tránh xung đột phiên bản giữa các thư viện Mockito và Hamcrest.

Tóm lại, các trình chỉnh sửa mockito chủ yếu được sử dụng để chế giễu và sơ khai, trong khi các trình chỉnh sửa Hamcrest được sử dụng để xác nhận. Cả hai có thể được sử dụng cùng nhau một cách hiệu quả trong các thử nghiệm bằng cách tận dụng phương pháp `argthat 'để tích hợp các trình mai mối Hamcrest vào khung chế nhạo của Mockito.

Trích dẫn:
[1] https://stackoverflow.com/questions/8348046/mockitos-matcher-vs-hamcrest-matcher
[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+Migration+Mockito+1+to+Mockito+2
[5] https://site.mockito.org/javadoc/current/org/mockito/hamcrest/MockitoHamcrest.html
[6] https://www.baeldung.com/hamcrest-text-patchers
[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.MockitoHamcrest.argThat