Eso va a ser fácil, pero no puedo encontrar la diferencia entre ellos y cuál usar, si tengo ambas lib's incluidas en mi classpath?Mockito's Matcher vs Hamcrest Matcher?
Respuesta
métodos matcher Hamcrest vuelven Matcher<T>
y Mockito adaptadores de T. retorno Así, por ejemplo: org.hamcrest.Matchers.any(Integer.class)
devuelve una instancia de org.hamcrest.Matcher<Integer>
y org.mockito.Matchers.any(Integer.class)
devuelve una instancia de Integer
.
Eso significa que solo puede utilizar los adaptadores de Hamcrest cuando se espera un objeto Matcher<?>
en la firma, generalmente en llamadas assertThat
. Al configurar las expectativas o verificaciones en las que está llamando a los métodos del objeto simulado, utiliza los emparejadores Mockito.
Por ejemplo (con nombres completos para mayor claridad):
@Test
public void testGetDelegatedBarByIndex() {
Foo mockFoo = mock(Foo.class);
// inject our mock
objectUnderTest.setFoo(mockFoo);
Bar mockBar = mock(Bar.class);
when(mockFoo.getBarByIndex(org.mockito.Matchers.any(Integer.class))).
thenReturn(mockBar);
Bar actualBar = objectUnderTest.getDelegatedBarByIndex(1);
assertThat(actualBar, org.hamcrest.Matchers.any(Bar.class));
verify(mockFoo).getBarByIndex(org.mockito.Matchers.any(Integer.class));
}
Si desea utilizar un matcher Hamcrest en un contexto que requiere un matcher Mockito, puede utilizar la matcher org.mockito.Matchers.argThat
. Convierte un matcher Hamcrest en un matcher Mockito. Por lo tanto, supongamos que desea unir un doble valor con cierta precisión (pero no mucho). En ese caso, se podría hacer:
when(mockFoo.getBarByDouble(argThat(is(closeTo(1.0, 0.001))))).
thenReturn(mockBar);
Simplemente observando que, en Mockito 2, el ' argThat' sobrecarga que funciona con Hamcrest 'Matcher's se movió' MockitoHamcrest'. [Novedades de Mockito 2] (https://github.com/mockito/mockito/wiki/What% 27s-new-in-Mockito-2#incompatible) lo explican en su sección "Cambios incompatibles con 1.10". –
- 1. Múltiples resultados correctos con Hamcrest (¿hay un or-matcher?)
- 2. FlannBased Matcher aserción error
- 3. RESTful Strings matcher en Java
- 4. proveedor de contenido URI matcher
- 5. Cadena replaceAll() vs. Matcher replaceAll() (Diferencias de rendimiento)
- 6. Java Pattern Matcher: crear nuevo o reiniciar?
- 7. Mockito matcher y matriz de primitivos
- 8. Establecer Bootstrap Typeahead matcher insensible a mayúsculas y minúsculas
- 9. Igualdad de mapas con Hamcrest
- 10. Uso no operación en hamcrest
- 11. ¿Hay alguna manera de agregar un matcher de Jasmine a todo el entorno
- 12. GWT: cómo obtener expresiones regulares (Patrón y Matcher) trabajando en el lado del cliente
- 13. Cómo agregar Reemplazo en un grupo de Matcher en lugar de todo el patrón?
- 14. grupos de Java Matcher: Entender la diferencia entre "(?: X | Y)" y "(: X?) | (:? Y)"
- 15. ¿Cómo usar JUnit y Hamcrest juntos?
- 16. Usando una estructura con OCMock o Hamcrest
- 17. ¿Hay una manera simple de emparejar un campo usando Hamcrest?
- 18. Hamcrest genéricos infierno # 2: iterableWithSize da errror "no es aplicable para los argumentos"
- 19. Diferencia entre Hamcrest-library Matchers y Hamcrest-core CoreMatchers
- 20. Mezclar Hamcrest y TestNG
- 21. de Hamcrest no compila
- 22. Hamcrest Date Matchers
- 23. ¿Hay una versión de JUnit assertThat que utiliza la funcionalidad Hamcrest 'describeMismatch'?
- 24. pattern.matcher()() vs pattern.matches
- 25. biblioteca de coincidencias para .net
- 26. ¿Cómo puedo usar Hamcrest para verificar si cada elemento en una matriz de dobles está "cerca" de cada elemento en otra matriz?
- 27. Comparación de números de Hamcrest usando entre
- 28. Biblioteca de Hamcrest para la fecha
- 29. Hamcrest CombinableMatcher - Método Genérico no se compilará
- 30. ¿Cuándo los genéricos de Java requieren <? extends T> en lugar de <T> y hay algún inconveniente de cambio?
relacionadas: [? Cómo hacer Mockito adaptadores de trabajo] (http://stackoverflow.com/a/22822514/1426891) –