Sử dụng mockitohamcrest trên các trình mai mối Hamcrest truyền thống cung cấp một số lợi thế, đặc biệt là khi làm việc với Mockito để chế giễu trong các bài kiểm tra đơn vị. Đây là những lợi ích chính:
1. Tích hợp với mockito: Mockitohamcrest cho phép bạn tích hợp liền mạch các trình chỉnh sửa Hamcrest với khuôn khổ chế giễu của Mockito. Sự tích hợp này là rất quan trọng để thiết lập các sơ khai hoặc xác minh các cuộc gọi phương thức với khớp đối số phức tạp, không được hỗ trợ trực tiếp bởi các trình kết hợp Hamcrest truyền thống. Ví dụ: bạn có thể sử dụng `mockitohamcrest.argthat` để chuyển đổi một trình kết hợp Hamcrest thành một trình chỉnh sửa mockito, cho phép bạn sử dụng bộ trình mai mối phong phú của Hamcrest trong bối cảnh Mockito [1] [10] [12].
2. Tránh sự không tương thích phiên bản: Mockito được tách rời khỏi Hamcrest trong phiên bản 2.1.0 để tránh sự không tương thích phiên bản đã gây ra vấn đề cho người dùng trong quá khứ. Mockitohamcrest cung cấp một cách để sử dụng các trình mai mối Hamcrest mà không được ghép nối chặt chẽ với một phiên bản cụ thể của Hamcrest, do đó làm giảm các xung đột tiềm năng [1] [10].
3. Tính linh hoạt trong kết hợp đối số: Mockitohamcrest cho phép bạn sử dụng các trình chỉnh sửa linh hoạt và biểu cảm của Hamcrest để xác định các kịch bản phù hợp đối số phức tạp. Điều này đặc biệt hữu ích khi bạn cần xác minh rằng một phương thức được gọi với các đối số phù hợp với các điều kiện nhất định, chẳng hạn như các chuỗi chứa các chuỗi con hoặc số cụ thể trong một phạm vi nhất định [4] [12].
4. Cải thiện khả năng đọc và mã tự ghi chép: Bằng cách sử dụng các trình chỉnh sửa Hamcrest thông qua Mockitohamcrest, các bài kiểm tra của bạn có thể vẫn tự ghi chép và dễ đọc. Người kết hợp thể hiện rõ ràng ý định của bài kiểm tra, giúp các nhà phát triển dễ hiểu những gì đang được kiểm tra mà không cần nhận xét bổ sung [3] [9].
5. Thông báo lỗi tốt hơn: Khi các xác nhận thất bại, Hamcrest cung cấp các thông báo lỗi chi tiết và có ý nghĩa, có thể hỗ trợ đáng kể trong việc gỡ lỗi. Điều này đặc biệt có lợi khi sử dụng mockitohamcrest, vì nó giúp xác định lý do tại sao xác minh giả thất bại, giúp chẩn đoán các vấn đề dễ dàng hơn [3] [9].
6. Tùy chỉnh và mở rộng: API Matcher của Hamcrest cho phép bạn tạo trình kết hợp tùy chỉnh phù hợp với nhu cầu thử nghiệm cụ thể của bạn. Khi được kết hợp với Mockitohamcrest, khả năng mở rộng này cho phép bạn viết các bài kiểm tra có mục tiêu và biểu cảm có nhiều mục tiêu phù hợp với logic của ứng dụng của bạn [6] [9].
Tóm lại, Mockitohamcrest cung cấp một sự kết hợp mạnh mẽ giữa khả năng chế giễu của Mockito với các trình chỉnh sửa linh hoạt và biểu cảm của Hamcrest, tăng cường khả năng đọc, tính linh hoạt và khả năng bảo trì của thử nghiệm.
Trích dẫn:[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.MockitoHamcrest.MockitoHamcrest
[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.MockitoHamcrest
[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-matcher