hamcrest hasItem and hasProperty,断言是否存在具有属性值的对象

2022-09-01 06:33:23
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))));

其中 actual 是 ID 为 Long 的 POJO。

我明白了,

MatcherAssert 类型中的方法 assertThat(T, Matcher<? super T>) 不适用于参数(List, Matcher<Iterable<? super Object>>)

从各种文档和其他堆栈溢出页面,它应该是有效的,但我得到上面的错误。


答案 1

尝试显式填写 type 参数 - 假设是 ,尝试调用:actualList<YourPojo>

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

答案 2

不必指定类类型时的较短版本:

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

推荐