Hat jemand Hamcrest mit TestNG integriert, so dass seine Matcher leicht in TestNG-Assertions verwendet werden können?Mischen von Hamcrest und TestNG
Antwort
Kurz gesagt, um Ihre Frage zu beantworten: Sie müssen TestNG nicht mit Hamcrest integrieren. Rufen Sie einfach org.hamcrest.MatcherAssert.assertThat(...)
direkt an, die java.lang.AssertionError
wirft.
Hintergrund
fand ich Ihre Frage über Google, genau das gleiche Problem fragen. Nach weiterem Googeln habe ich keine befriedigenden Antworten gefunden, daher habe ich den Quellcode für JUnits Integration mit Hamcrest gelesen.
Mit JUnit wird hamcrest Integration normalerweise durch den Aufruf verwendet:
org.junit.Assert.assertThat(
T actual,
org.hamcrest.Matcher<? super T> matcher)
Wenn ich den Quellcode lesen, entdeckte ich es nur einen kleinen Wrapper zu nennen:
org.hamcrest.MatcherAssert.assertThat(
String reason,
T actual,
org.hamcest.Matcher<? super T> matcher)
Diese Funktion wirft java.lang.AssertionError
.
Wenn Sie mit Problem mit leeren Methode konfrontiert sind, dann würde ich vorschlagen, hamcrest
zuerst in Abhängigkeitsliste hinzuzufügen. oder importieren Sie zuerst hamcrest
, wird es das Problem lösen.
Ich benutzte TestNJ mit rexsl (intern Hamcrest verwenden) und es findet keine leere Methode. dann habe ich rexsl zuerst in der Abhängigkeitsliste hinzugefügt, wenn Sie eine Bibliothek im Klassenpfad hinzufügen, können Sie zuerst versuchen, die Hamcrest one hinzuzufügen.
hoffe, es wird jemandem wie mir helfen.
Was für mich gearbeitet: 1. http://search.maven.org/
Suche nach 'java-hamcrest' jetzt die neueste wie '2.0.0.0'
Finden Sie Abhängigkeit für Gradle (in meinem Fall)
Hinzugefügt compile 'org.hamcrest: java-hancrest: 2.0.0.0' zu build.gradle in meinem Projekt.
Das ist großartig, außer dass _TestNG_ [weiche Behauptungen] (http://static.javadoc.io/org.testng/testng/6.8.21/org/testng/asserts/SoftAssert.html) hat die nicht von _Hamcrest_ verwendet werden. – Bass