Sarà facile, ma non riesco a trovare la differenza tra loro e quale usare, se ho entrambi i lib inclusi nel mio classpath?Mockito's Matcher vs Hamcrest Matcher?
risposta
Hamcrest metodi matcher restituiscono Matcher<T>
e Mockito matchers T. ritorno Così, ad esempio: org.hamcrest.Matchers.any(Integer.class)
restituisce un'istanza di org.hamcrest.Matcher<Integer>
, e org.mockito.Matchers.any(Integer.class)
restituisce un'istanza di Integer
.
Ciò significa che è possibile utilizzare i rilevatori di Hamcrest solo quando è previsto un oggetto Matcher<?>
nella firma, in genere nelle chiamate assertThat
. Quando si impostano le aspettative o le verifiche in cui si chiamano i metodi dell'oggetto fittizio, si usano i corrispondenti Mockito.
Per esempio (con nomi completi per chiarezza):
@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));
}
Se si desidera utilizzare un matcher Hamcrest in un contesto che richiede un matcher Mockito, è possibile utilizzare il org.mockito.Matchers.argThat
matcher. Converte un matcher di Hamcrest in un matcher Mockito. Quindi, supponiamo di voler abbinare un doppio valore con una certa precisione (ma non molto). In tal caso, si potrebbe fare:
when(mockFoo.getBarByDouble(argThat(is(closeTo(1.0, 0.001))))).
thenReturn(mockBar);
Basta notare che, in Mockito 2, il ' argThat' overload che funziona con Hamcrest 'Matcher's è stato spostato' MockitoHamcrest'. [Le novità di Mockito 2] (https://github.com/mockito/mockito/wiki/What%27s-new-in-Mockito-2#incompatible) ne discutono nella sezione "Incompatible changes with 1.10". –
- 1. come implementare un hamcrest matcher
- 2. Hamcrest matcher confrontando valore doppio da JSON
- 3. C'è qualche Hamcrest Matcher per java.util.Optional?
- 4. Matcher Junit per comparatori?
- 5. Come usare Webmock regex matcher?
- 6. Hamcrest matcher per controllare valore di ritorno del metodo nella raccolta
- 7. Esiste un Hamcrest "per ogni" Matcher che asserisce tutti gli elementi di una partita o di una partita Iterable in un singolo Matcher specifico?
- 8. Java Pattern Matcher: crea nuovo o ripristina?
- 9. c'è Mockito eq matcher per varargs array?
- 10. Asserzioni matcher errore fallito opencv Android
- 11. RSpec e matcher personalizzato con più argomenti
- 12. semplice Java espressione regolare matcher non funziona
- 13. rspec - matcher per una delle opzioni
- 14. FlannBased Matcher Asserzione non riuscita Errore
- 15. Uguaglianza mappa con Hamcrest
- 16. Come scrivere un matcher che non è uguale a qualcosa
- 17. promesse risolto e respinti in un costume Jasmine Matcher
- 18. Set Matcher Bootstrap Typeahead senza distinzione tra maiuscole e minuscole
- 19. Utilizzare clang matcher per rilevare la sequenza di modelli
- 20. Pattern/Matcher group() per ottenere la sottostringa in Java?
- 21. Java RegEx: Basta avere una parte del gruppo matcher
- 22. Matcher Capybara per presenza di pulsante o collegamento
- 23. Dove viene avviata la dichiarazione di JUnit Matcher #Con?
- 24. Abuso di hasItems hamcrest
- 25. Hamcrest e ScalaTest
- 26. Gli strumenti utilizzano l'annotazione di hamcrest Factory?
- 27. GWT: come ottenere espressioni regolari (Pattern e Matcher) che lavorano sul lato client
- 28. RSpec Il aspettarsi sintassi non supporta matchers operatore, quindi è necessario passare un matcher a `# to`
- 29. Come rendere il matcher scalatest per ignorare gli spazi bianchi quando si confrontano due stringhe?
- 30. Non è possibile ottenere l'unicità passaggio test di convalida con shoulda matcher
correlati: [? Come si Mockito matchers lavoro] (http://stackoverflow.com/a/22822514/1426891) –