Використання Moctitohamcrest перед традиційними матчами Hamcrest пропонує кілька переваг, особливо при роботі з Mockito для знущання в одиничних тестах. Ось ключові переваги:
1. Інтеграція з Mockito: Moctitohamcrest дозволяє безперешкодно інтегрувати відповідність Hamcrest з насмішкуватою рамкою Mockito. Ця інтеграція має вирішальне значення для налаштування заглушок або перевірки викликів методів зі складним узгодженням аргументів, що безпосередньо не підтримується традиційними відповідальними відповідями Hamcrest. Наприклад, ви можете використовувати `moctitohamcrest.argthat`, щоб перетворити відповідність Hamcrest у Mockito Matcher, що дозволяє використовувати багатий набір матчів у контекстах Mockito [1] [10] [12].
2. Уникнення несумісності версії: Мокто був від'єднаний від Hamcrest у версії 2.1.0, щоб уникнути несумісності версії, яка спричинила проблеми для користувачів у минулому. Moctitohamcrest забезпечує спосіб використання збігачів Hamcrest, не будучи щільно поєднаними з певною версією Hamcrest, тим самим зменшуючи потенційні конфлікти [1] [10].
3. Гнучкість у відповідності аргументів: Moctitohamcrest дозволяє використовувати гнучкі та виразні відповідники Hamcrest для визначення складних сценаріїв відповідності аргументів. Це особливо корисно, коли вам потрібно перевірити, що метод був викликаний аргументами, які відповідають певним умовам, такими як рядки, що містять конкретні підрядки або числа в певному діапазоні [4] [12].
4. Поліпшена читабельність та код самодокументуючого коду: Використовуючи відповідність Hamcrest через Moctitohamcrest, ваші тести можуть залишатися самодокументом і легко читати. Матери чітко виражають наміри тесту, що полегшує розробникам зрозуміти, що тестується, не потребуючи додаткових коментарів [3] [9].
5. Кращі повідомлення про помилки: Коли твердження провалюються, Hamcrest надає детальні та змістовні повідомлення про помилки, які можуть суттєво допомогти у налагодженні. Це особливо вигідно при використанні Moctitohamcrest, оскільки це допомагає визначити, чому не вдалося макетної перевірки, що полегшує діагностику проблем [3] [9].
6. Налаштування та розширюваність: API Matcher Hamcrest дозволяє створювати спеціальні відповідники, пристосовані до ваших конкретних потреб тестування. У поєднанні з Moctitohamcrest, ця розширюваність дозволяє писати більш цілеспрямовані та виразні тести, які точно відповідають логіці вашої програми [6] [9].
Підводячи підсумок, Moctitohamcrest пропонує потужне поєднання насмішок Моктото з гнучкими та виразними збігачами Hamcrest, підвищенням тестової читабельності, гнучкості та ремонту.
Цитати:[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/mockitocore/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