Je ne comprends pas comment JUnit 4.8 devrait fonctionner avec les matchers Hamcrest. Il y a des matchers définis à l'intérieur junit-4.8.jar
de org.hamcrest.CoreMatchers
. En même temps , il y a quelques autres matchers dans hamcrest-all-1.1.jar
dans org.hamcrest.Matchers
. Alors, où aller? Dois-je inclure explicitement le JAR hamcrest dans le projet et ignorer les correspondances fournies par JUnit?
En particulier, je suis intéressé par empty()
matcher et je ne le trouve dans aucun de ces pots. J'ai besoin d'autre chose? :)
Et une question philosophique: pourquoi JUnit a inclus le org.hamcrest
package dans sa propre distribution au lieu de nous encourager à utiliser la bibliothèque hamcrest originale?
org.hamcrest.Matchers.empty()
se trouve exactement ? Pourriez-vous s'il vous plaît donner un lien vers le fichier JAR?Si vous utilisez un Hamcrest avec une version supérieure ou égale à 1.2, vous devez utiliser le
junit-dep.jar
. Ce fichier jar n'a pas de classes Hamcrest et vous évitez donc les problèmes de chargement de classes.Depuis JUnit 4.11, le
junit.jar
lui - même n'a pas de classes Hamcrest. Il n'y en a plus besoinjunit-dep.jar
.la source
Ne répond pas exactement à votre question, mais vous devez absolument essayer l' API d'assertions fluentes FEST-Assert . Il est en concurrence avec Hamcrest, mais dispose d'une API beaucoup plus simple avec une seule importation statique requise. Voici le code fourni par cpater en utilisant FEST:
EDIT: Coordonnées Maven:
la source
Aussi, si JUnit 4.1.1 + Hamcrest 1.3 + Mockito 1.9.5 sont utilisés, assurez-vous que mockito-all n'est pas utilisé. Il contient les classes de base Hamcrest. Utilisez plutôt mockito-core. La configuration ci-dessous fonctionne:
la source
Étant donné que les versions changent constamment, je poste pour informer les gens qu'à compter du 2 décembre 2014, les instructions à l' adresse http://www.javacodegeeks.com/2014/03/how-to-test-dependencies-in -a-maven-project-junit-mockito-hamcrest-assertj.html a fonctionné pour moi. Cependant, je n'ai pas utilisé AssertJ, juste ceux-ci:
la source
Je suppose que c'est parce qu'ils voulaient que le
assertThat
fasse partie de JUnit. Cela signifie que laAssert
classe doit importer l'org.hamcrest.Matcher
interface et qu'elle ne peut pas le faire à moins que JUnit ne dépende de Hamcrest, ou n'inclue (au moins une partie de) Hamcrest. Et je suppose que l'inclusion d'une partie était plus facile, de sorte que JUnit serait utilisable sans aucune dépendance.la source
En 2018, en utilisant la plupart des bibliothèques modernes:
la source
JUnit-4.12 et JUnit-Dep-4.10 ont des dépendances Hamcrest selon les fichiers .xml respectifs.
Une enquête plus approfondie montre que bien que la dépendance ait été faite dans les fichiers .xml, la source et les classes dans les fichiers jars. Cela semble être un moyen d'exclure la dépendance dans build.gradle ... le tester pour que tout reste propre.
Juste un fyi
la source