Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Y a-t-il des alternatives à Hamcrest qui fonctionnent mieux avec Mockito


Y a-t-il des alternatives à Hamcrest qui fonctionnent mieux avec Mockito


Lorsque vous travaillez avec Mockito, Hamcrest est souvent utilisé pour ses correspondances expressives, ce qui améliore la lisibilité des tests. Cependant, il existe des alternatives qui peuvent bien fonctionner avec Mockito, chacune avec ses propres forces et faiblesses.

assertj

AssertJ est une alternative populaire à Hamcrest pour rédiger des affirmations dans les tests unitaires. Il fournit une API couramment que de nombreux développeurs trouvent plus facile à utiliser et plus expressif que Hamcrest. La syntaxe d'AssertJ est souvent préférée pour sa lisibilité et la possibilité de créer facilement des affirmations personnalisées. Bien qu'AssertJ ne s'intègre pas directement à Mockito comme le fait Hamcrest, il peut être utilisé aux côtés de Mockito pour les assertions, ce qui rend les tests plus lisibles et maintenables. Cependant, AssertJ est principalement axé sur les affirmations plutôt que sur les capacités de correspondance plus larges de Hamcrest [1] [3].

Vérité

Truth est une autre bibliothèque d'assertion développée par Google. Il offre une API courante similaire à ASSERTJ, mais se concentre davantage sur la fourniture d'un meilleur support d'achèvement automatique dans les IDE, ce qui peut être bénéfique pour découvrir des affirmations disponibles. La vérité n'est pas aussi couramment utilisée avec Mockito que Hamcrest mais peut être utilisée pour les affirmations dans les tests. Comme AssertJ, la vérité est plus axée sur les affirmations plutôt que sur la correspondance générale que Hamcrest fournit [3].

MOCKITO CHARCHES INTÉRIEUR

Mockito lui-même fournit des matchs qui peuvent être utilisés pour les interactions de coups et de vérification avec des objets simulés. Ces matchs renvoient le type qu'ils correspondent (par exemple, `any (Integer.class)` Renvoie un `entier '), qui est différent des matchs Hamcrest qui renvoient un` mineur'. Pour utiliser Hamcrest Matchers avec Mockito, vous pouvez utiliser `argthat` ou` mockitohamcrest.argthat 'pour convertir un matchur Hamcrest en une forme compatible en moquette [7].

Implémentations personnalisées

Pour les scénarios où vous préférez ne pas utiliser de bibliothèques externes, vous pouvez implémenter vos propres correspondants ou assertions. Cette approche permet un contrôle complet sur le comportement et la syntaxe, mais nécessite plus d'efforts et de maintenance. Il n'est généralement pas recommandé à moins d'avoir des besoins très spécifiques qui ne sont pas satisfaits par les bibliothèques existantes.

Conclusion

Alors que Hamcrest est largement utilisé avec Mockito en raison de sa flexibilité et de son expressivité, des alternatives telles que ASSERTJ et la vérité peuvent améliorer la partie d'affirmation de vos tests. Si vous cherchez quelque chose qui s'intègre bien à Mockito à des fins de correspondance, Hamcrest reste un choix fort, mais vous pouvez utiliser ses matchs aux côtés d'autres bibliothèques d'assertion pour une expérience de test plus complète. En fin de compte, le choix dépend de vos besoins et préférences spécifiques concernant la lisibilité, la facilité d'utilisation et le type d'affirmation ou de correspondances que vous devez effectuer dans vos tests.

Citations:
[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-part-1-unit-testing-with-junit-5-mockito-and-hamcrest.html
[6] https://softwareensineering.stackexchange.com/questions/447953/alternatives-to-using-mock-librares-such-as-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-deprecated-hamcrest-method-is