2009-07-07 19 views

Respuesta

41

En resumen, para responder a su pregunta: No necesita integrar TestNG con Hamcrest. Simplemente llame al org.hamcrest.MatcherAssert.assertThat(...) directamente, que arroja java.lang.AssertionError.

Antecedentes

He encontrado su pregunta a través de Google, preguntándose exactamente el mismo problema. Después de buscar en Google, no encontré ninguna respuesta satisfactoria, así que leí el código fuente para la integración de JUnit con Hamcrest.

Con JUnit, la integración Hamcrest se utiliza normalmente llamando al:

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

Cuando leí el código fuente, descubrí que sólo un pequeño envoltorio de llamar:

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

Esta función emite java.lang.AssertionError .

+0

Esto es grande excepto que _TestNG_ tiene [afirmaciones suaves] (http://static.javadoc.io/org.testng/testng/6.8.21/org/testng/asserts/SoftAssert.html) que puede no se usará desde _Hamcrest_. – Bass

2

Si tiene problemas con el método vacío, le sugiero que agregue hamcrest primero en la lista de dependencias. o importar primero hamcrest, resolverá el problema.

Estaba usando TestNJ con rexsl (internamente usando Hamcrest) y no encuentra el método vacío. luego agregué rexsl primero en la lista de dependencias, si está agregando la biblioteca en la ruta de clase, puede intentar agregar primero la de Hamcrest.

espero que ayude a alguien como yo.

0

Lo que funcionó para mí: 1. http://search.maven.org/

  1. Buscar 'java-hamcrest', la última por ahora es '2.0.0.0'

  2. encontrar dependencia para Gradle (en mi caso)

  3. Agregué compilación 'org.hamcrest: java-hamcrest: 2.0.0.0' a build.gradle en mi proyecto.

Cuestiones relacionadas