2009-07-07 17 views

risposta

41

In breve, per rispondere alla tua domanda: Non è necessario integrare TestNG con Hamcrest. Basta chiamare lo org.hamcrest.MatcherAssert.assertThat(...) direttamente che genera java.lang.AssertionError.

Sfondo

Ho trovato la tua domanda tramite Google, chiedendosi esattamente lo stesso problema. Dopo ulteriori ricerche su Google, non ho trovato risposte soddisfacenti, quindi ho letto il codice sorgente per l'integrazione di JUnit con Hamcrest.

Con JUnit, l'integrazione Hamcrest viene normalmente utilizzato chiamando:

org.junit.Assert.assertThat(
    T actual, 
    org.hamcrest.Matcher<? super T> matcher) 

Quando ho letto il codice sorgente, l'ho scoperto solo un piccolo involucro di chiamare:

org.hamcrest.MatcherAssert.assertThat(
    String reason, 
    T actual, 
    org.hamcest.Matcher<? super T> matcher) 

Questa funzione tiri java.lang.AssertionError .

+0

Questo è ottimo, tranne che _TestNG_ ha [asserzioni morbide] (http://static.javadoc.io/org.testng/testng/6.8.21/org/testng/asserts/SoftAssert.html) che può essere usato da _Hamcrest_. – Bass

2

Se si riscontrano problemi con il metodo vuoto, suggerirei di aggiungere prima hamcrest nell'elenco delle dipendenze. o importare prima hamcrest, risolverà il problema.

Stavo usando TestNJ con rexsl (utilizzando internamente Hamcrest) e non riesce a trovare il metodo vuoto. poi ho aggiunto rexsl al primo nella lista delle dipendenze, se si aggiunge una libreria nel percorso della classe si può provare ad aggiungere prima quella di Hamcrest.

spero che possa aiutare qualcuno come me.

0

Quello che ha funzionato per me: 1. http://search.maven.org/

  1. Cerca 'java-hamcrest' più tardi a partire per ora è '2.0.0.0'

  2. trova dipendenza per Gradle (nel mio caso)

  3. Aggiunto 'org.hamcrest: java-hamcrest: 2.0.0.0' a build.gradle nel mio progetto.