¿Cómo uso Hamcrest con JUnit 5 cuando JUnit 5 no tiene una función assertThat()?
junit5 (2)
Consulte https://github.com/junit-team/junit5/issues/147 :
Puedes usar ambos, Hamcrest y AssertJ, en JUnit5. Ambos marcos tienen un método simple assertThat, que puede importar y usar si lo desea.
Actualmente, no planeamos respaldar estos marcos dentro de nuestras propias aserciones para evitar las dependencias. Aún así, uno puede usarlos muy bien.
Para usar Hamcrest con JUnit 4 usamos una función assertThat()
. Sin embargo, JUnit 5 ya no tendrá una función assertThat()
. ¿Cómo uso Hamcrest sin un assertThat()
?
Debe asegurarse de que Hamcrest esté incluido en la ruta de clase y luego usar la función assertThat () proporcionada por Hamcrest. De la Guía del usuario de JUnit 5 actual - Escribir aseveraciones de pruebas ,
La clase org.junit.jupiter.Assertions de JUnit Jupiter no proporciona un método assertThat () como el que se encuentra en la clase org.junit.Assert de JUnit 4 que acepta un Hamcrest Matcher. En su lugar, se recomienda a los desarrolladores que utilicen el soporte integrado para emparejadores proporcionado por bibliotecas de aserción de terceros.
El siguiente ejemplo muestra cómo usar el soporte de assertThat () de Hamcrest en una prueba de JUnit Jupiter. Mientras la biblioteca Hamcrest se haya agregado a la ruta de clase, puede importar métodos de forma estática como assertThat (), es () y equalTo () y luego usarlos en pruebas como en el método assertWithHamcrestMatcher () a continuación.
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import org.junit.jupiter.api.Test;
class HamcrestAssertionDemo {
@Test
void assertWithHamcrestMatcher() {
assertThat(2 + 1, is(equalTo(3)));
}
}
Naturalmente, las pruebas heredadas basadas en el modelo de programación JUnit 4 pueden continuar utilizando org.junit.Assert # assertThat ".