J'aimerais utiliser Hamcrest Strong> comme cadre de sucre à utiliser dans quelque chose comme p> ou p> juste comme si code> déclarations, non dans les tests de l'unité avec des affirmations, mais dans le code de production brut.
assertThat code> mais sans lancer des erreurs , juste retourner booléen.
C'est possible? p> p>
4 Réponses :
C'est juste Java, c'est à vous de décider ce que vous choisissez de le faire. Le Page d'accueil du HamCrest dit: P>
fournit une bibliothèque d'objets de correspondance (également appelés contraintes ou prédicats) permettant de définir des règles «correspondant» à définir de manière préventive, à utiliser dans d'autres cadres. Les scénarios typiques incluent des cadres de test, des bibliothèques moqueuses et des règles de validation de l'interface utilisateur. P>
Remarque: Hamcrest Ce n'est pas une bibliothèque de test: il arrive que des comparuts soient très utiles pour tester forte> em>. p>. blockQuote>
Il y a aussi une page sur les autres cadres qui utilisent hamcrest. < / p>
D'accord, j'ai juste besoin d'un exemple de travail, comment utiliser des correspondants sans affirmation
Vous pouvez utiliser les correspondances Pour améliorer la lisibilité, créez votre propre Méthode d'assistant similaire à (valeur) code> méthode de n'importe quel correspondeur
code> instance.
ASSERTTHAT CODE>. P>
public static <T> boolean checkThat(T actual, Matcher<? super T> matcher) {
return matcher.matches(actual);
}
...
if (checkThat(name, equalTo("John"))) { ... }
Suivi de la réponse de David, nous faisons actuellement exactement cela et notre méthode d'assistance est nommée "The ()". Cela conduit à un code comme: qui obtient un peu Lisp-y à la fin, mais le rend très lisible même pour les clients. P> P>
Il y a le Bool Project qui fournit la syntaxe suivante:
Wow, c'est vraiment impressionnant!
Le projet IMHO BOOL est un peu survenue pour une méthode simple "la". Même s'il fournit des adjoints supplémentaires, mais ce ne sont que des doublons de hamcrest (comme Allof, de tout point, soit, à la fois, etc.)