web-dev-qa-db-fra.com

Quelle est l'alternative à l'utilisation de la méthode Deprecated Hamcrest is ()?

J'utilise actuellement le code suivant pour affirmer une valeur boolean, mais la méthode org.hamcrest.Matchers.is() est déconseillée.

assertThat(someValue, is(false));

Existe-t-il une syntaxe alternative simple pour tester les valeurs booléennes sans recourir à assertTrue() qui vous donne de mauvais messages d'échec comme "Java.lang.AssertionError"


Modifier après avoir reçu des commentaires/réponses

Mes préoccupations initiales ont été soulevées car Eclipse affiche la déclaration d'importation suivante comme obsolète

enter image description here

Lors de l'affichage de la documentation API Hamcrest , il existe 3 variantes surchargées de la méthode is(), dont une seule est déconseillée.

Par conséquent, pour clarifier le commentaire de @mark et la réponse de @matt, l'utilisation de is() que j'ai posté ci-dessus est valide et non déconseillée.

50
Brad

Avez-vous essayé equalTo(T)?

assertThat(someValue, equalTo(false));

Je ne vois pas que is(T) est obsolète - is (Class) est obsolète d cependant.

45
matt b

J'avais pensé que c'était un problème de dépendance transitive, mais c'est vraiment juste un problème d'affichage dans Eclipse où il marque l'importation comme obsolète car un formulaire surchargé l'est. Le code devrait compiler correctement puisque l'importation exposera tous les formulaires.

Le formulaire obsolète a été supprimé de la source et n'existera pas dans la prochaine version (1.4).

Réponse originale

Le problème est que JUnit inclut un ensemble de classes Hamcrest dans son JAR . Vous pouvez utiliser junit-dep.jar pour l'instant, mais les versions plus récentes (4.9 et 4.10 jusqu'à présent) de JUnit les omettent.

9
David Harkness

Il est dit, utilisez instanceOf pour la correspondance de classe dans le document.

http://junit.org/javadoc/latest/org/hamcrest/core/Is.html#isA (Java.lang.Class)

is(IOException.class);

sera

is(instanceOf(IOException.class));

par exemple.

3
shinpei