2009-07-07 7 views

Antwort

41

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 .

+0

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

2

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.

0

Was für mich gearbeitet: 1. http://search.maven.org/

  1. Suche nach 'java-hamcrest' jetzt die neueste wie '2.0.0.0'

  2. Finden Sie Abhängigkeit für Gradle (in meinem Fall)

  3. Hinzugefügt compile 'org.hamcrest: java-hancrest: 2.0.0.0' zu build.gradle in meinem Projekt.