2013-11-20 11 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)))); 

実際にはidがLongのPOJOです。hamcrest hasItemとhasPropertyは、プロパティ値を持つオブジェクトが存在する場合にアサートします。

私が得る、タイプMatcherAssert

方法assertThat(T, Matcher<? super T>)は、様々なドキュメントや他のstackoverflowのページから引数(List<Pojo>, Matcher<Iterable<? super Object>>)

、それが有効である必要がありには適用されませんが、私は上記のエラーを取得します。

答えて

49

typeパラメータに記入明示的に試してみてください - actualList<YourPojo>であると仮定すると、呼び出してみてください:

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

おかげで、働くcontainsInAnyOrderを使用すると同様の問題が発生しましたが、動作させることができませんでした。 – wenic

6

あなたはクラス型を指定する必要はありません短いバージョン:その

List<IssueDefinitionDto> definitions = ...; // Tested variable 
... 
assertThat(definitions, hasItem(hasProperty("id", is(10L)))); 
関連する問題