12
votes

Toute façon d'utiliser des matchers de Hamcrest dans le code de production?

J'aimerais utiliser Hamcrest comme cadre de sucre à utiliser dans si déclarations, non dans les tests de l'unité avec des affirmations, mais dans le code de production brut.

quelque chose comme xxx

ou xxx

juste comme assertThat mais sans lancer des erreurs , juste retourner booléen. C'est possible?


0 commentaires

4 Réponses :


6
votes

C'est juste Java, c'est à vous de décider ce que vous choisissez de le faire. Le Page d'accueil du HamCrest dit:

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.

Remarque: Hamcrest Ce n'est pas une bibliothèque de test: il arrive que des comparuts soient très utiles pour tester . .

Il y a aussi une page sur les autres cadres qui utilisent hamcrest. < / p>


1 commentaires

D'accord, j'ai juste besoin d'un exemple de travail, comment utiliser des correspondants sans affirmation



5
votes

Vous pouvez utiliser les correspondances (valeur) code> méthode de n'importe quel correspondeur code> instance. xxx pré>

Pour améliorer la lisibilité, créez votre propre Méthode d'assistant similaire à ASSERTTHAT CODE>. P>

public static <T> boolean checkThat(T actual, Matcher<? super T> matcher) {
    return matcher.matches(actual);
}

...

if (checkThat(name, equalTo("John"))) { ... }


0 commentaires

5
votes

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: xxx

qui obtient un peu Lisp-y à la fin, mais le rend très lisible même pour les clients.


0 commentaires

5
votes

Il y a le Bool Project qui fournit la syntaxe suivante: xxx


2 commentaires

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.)