Cuando se trabaja con Mockito, Hamcrest a menudo se usa para sus Matchers expresivos, lo que mejora la legibilidad de las pruebas. Sin embargo, hay alternativas que pueden funcionar bien con Mockito, cada una con sus propias fortalezas y debilidades.
afirmar
ASDERTJ es una alternativa popular a Hamcrest para escribir afirmaciones en las pruebas unitarias. Proporciona una API fluida que muchos desarrolladores encuentran más fácil de usar y más expresivo que Hamcrest. La sintaxis de Afirdj a menudo se prefiere por su legibilidad y la capacidad de crear fácilmente afirmaciones personalizadas. Si bien ASMERTJ no se integra directamente con Mockito como lo hace Hamcrest, se puede usar junto con Mockito para las afirmaciones, haciendo que las pruebas sean más legibles y mantenibles. Sin embargo, AfirTJ se centra principalmente en afirmaciones en lugar de las capacidades de correspondencia más amplias de Hamcrest [1] [3].
Verdad
La verdad es otra biblioteca de afirmación desarrollada por Google. Ofrece una API con fluidez similar a ASDERTJ, pero se centra más en proporcionar un mejor soporte de combustión automática en IDES, lo que puede ser beneficioso para descubrir las afirmaciones disponibles. La verdad no se usa tan comúnmente con Mockito como Hamcrest, sino que se puede usar para afirmaciones en las pruebas. Al igual que afirmar, la verdad se centra más en las afirmaciones en lugar de la coincidencia de uso general que Hamcrest proporciona [3].
Los matchers incorporados de Mockito
Mockito proporciona a Matchers que se pueden usar para retirar y verificar las interacciones con objetos simulados. Estos Matchers devuelven el tipo que coinciden (por ejemplo, `Any (Integer.Class)` Devuelve un `` `entero ''), que es diferente de Hamcrest Matchers que devuelven un` Matcher`. Para usar Hamcrest Matchers con Mockito, puede usar `Argthat` o` Mockitohamcrest.argthat` para convertir una matcher Hamcrest en una forma compatible con simulacros [7].
Implementaciones personalizadas
Para los escenarios en los que prefiere no usar bibliotecas externas, puede implementar sus propios combates o afirmaciones. Este enfoque permite un control completo sobre el comportamiento y la sintaxis, pero requiere más esfuerzo y mantenimiento. Por lo general, no se recomienda a menos que tenga necesidades muy específicas que no se satisfagan por las bibliotecas existentes.
Conclusión
Si bien Hamcrest se usa ampliamente con Mockito debido a su flexibilidad y expresividad, alternativas como Afirman y la verdad pueden mejorar la parte de afirmación de sus pruebas. Si está buscando algo que se integre bien con Mockito para fines coincidentes, Hamcrest sigue siendo una opción sólida, pero puede usar sus Matchers junto con otras bibliotecas de afirmación para una experiencia de prueba más completa. En última instancia, la elección depende de sus necesidades y preferencias específicas con respecto a la legibilidad, la facilidad de uso y el tipo de afirmaciones o coincidencias que debe realizar en sus pruebas.
Citas:[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-tart-1-unit-testing-with-junit-5-mockito-and-hamcrest.html
[6] https://softwareEngineering.stackexchange.com/questions/447953/alternates-to-using-mock-libraries-such-s-mockito-in-unit-testing
[7] https://stackoverflow.com/questions/8348046/mockitos-matcher-vs-hamcrest-matcher
[8] https://stackoverflow.com/questions/12606196/what-is-the-alternative-to-Using-the-decretated-hamcrest-method-is