Ich kann nicht verstehen, wie JUnit 4.8 mit Hamcrest-Matchern funktionieren soll. Es gibt einige Matcher innen definiert junit-4.8.jar
in org.hamcrest.CoreMatchers
. Zur gleichen Zeit gibt es einige andere Matcher hamcrest-all-1.1.jar
in org.hamcrest.Matchers
. Also, wohin soll es gehen? Soll ich hamcrest JAR explizit in das Projekt aufnehmen und von JUnit bereitgestellte Matcher ignorieren?
Insbesondere interessiere ich mich für empty()
Matcher und kann es in keinem dieser Gläser finden. Ich brauche noch etwas :) :)
Und eine philosophische Frage: Warum hat JUnit das org.hamcrest
Paket in seine eigene Distribution aufgenommen, anstatt uns zu ermutigen, die ursprüngliche Hamcrest-Bibliothek zu verwenden?
org.hamcrest.Matchers.empty()
befindet sich Könnten Sie bitte einen Link zur JAR-Datei geben?Wenn Sie ein Hamcrest mit einer Version größer oder gleich 1.2 verwenden, sollten Sie das verwenden
junit-dep.jar
. Dieses Glas hat keine Hamcrest-Klassen und daher vermeiden Sie Probleme beim Laden von Klassen.Seit JUnit 4.11 hat das
junit.jar
selbst keine Hamcrest-Klassen mehr. Es besteht keine Notwendigkeitjunit-dep.jar
mehr.quelle
Sie beantworten Ihre Frage nicht genau, sollten jedoch unbedingt die FEST-Assert-API für fließende Zusicherungen ausprobieren . Es konkurriert mit Hamcrest, hat aber eine viel einfachere API mit nur einem statischen Import. Hier ist der Code, den cpater mit FEST bereitstellt :
EDIT: Maven Koordinaten:
quelle
Wenn JUnit 4.1.1 + Hamcrest 1.3 + Mockito 1.9.5 verwendet wird, stellen Sie sicher, dass Mockito-All nicht verwendet wird. Es enthält Hamcrest-Kernklassen. Verwenden Sie stattdessen Mockito-Core. Die folgende Konfiguration funktioniert:
quelle
Da sich die Versionen ständig ändern, poste ich, um die Leute darüber zu informieren, dass ab dem 2. Dezember 2014 die Anweisungen unter http://www.javacodegeeks.com/2014/03/how-to-test-dependencies-in -a-maven-project-junit-mockito-hamcrest-assertj.html hat bei mir funktioniert. Ich habe AssertJ jedoch nicht verwendet, nur diese:
quelle
Ich würde vermuten, das liegt daran, dass sie wollten
assertThat
, dass das Teil von JUnit wird. Das bedeutet, dass dieAssert
Klasse dieorg.hamcrest.Matcher
Schnittstelle importieren muss und dies nur tun kann, wenn JUnit entweder von Hamcrest abhängt oder (zumindest einen Teil von) Hamcrest enthält. Und ich denke, ein Teil davon war einfacher, so dass JUnit ohne Abhängigkeiten verwendet werden kann.quelle
Im Jahr 2018 mit den meisten modernen Bibliotheken:
quelle
Sowohl JUnit-4.12 als auch JUnit-Dep-4.10 weisen Hamcrest-Abhängigkeiten gemäß den jeweiligen XML-Dateien auf.
Weitere Untersuchungen zeigen, dass, obwohl die Abhängigkeit in den XML-Dateien hergestellt wurde, die Quelle und die Klassen in den Jars. Dies scheint eine Möglichkeit zu sein, die Abhängigkeit in build.gradle auszuschließen ... sie zu testen, um alles sauber zu halten.
Nur eine Info
quelle