2013-11-20 8 views
24
import static org.hamcrest.MatcherAssert.assertThat; 
import static org.hamcrest.Matchers.hasItem; 
import static org.hamcrest.Matchers.equalTo; 

assertThat(actual, hasItem(hasProperty("id", equalTo(1L)))); 

dove effettivo è un POJO con ID long.hamcrest hasItem e hasProperty, asserisce se esiste un oggetto con valore di proprietà

ricevo,

Il metodo assertThat(T, Matcher<? super T>) nel tipo MatcherAssert non è applicabile per gli argomenti (List<Pojo>, Matcher<Iterable<? super Object>>)

da vari documenti e altre pagine StackOverflow, esso deve essere valido, ma ho l'errore di cui sopra.

risposta

49

Prova esplicitamente compilando il parametro type - assumendo actual è un List<YourPojo>, provare a chiamare:

assertThat(actual, hasItem(Matchers.<YourPojo>hasProperty("id", equalTo(1L)))); 
+0

grazie, che lavori. Abbiamo riscontrato un problema simile durante l'utilizzo di contieneInAnyOrder, ma non è stato possibile farlo funzionare. – wenic

6

La versione più breve quando non è necessario specificare il tipo di classe:

List<IssueDefinitionDto> definitions = ...; // Tested variable 
... 
assertThat(definitions, hasItem(hasProperty("id", is(10L)))); 
Problemi correlati