Hamcrest 匹配器的多个 hasProperty 约束

Multiple hasProperty constraints for Hamcrest matcher

我尝试了以下代码,用于匹配列表中的单个 ComplexObject

assertThat(complexObjectList, Matchers.<ComplexObject>hasItems(
    hasProperty("lang", equalTo(lang)), 
    hasProperty("name", equalTo(name)),
    hasProperty("desc", equalTo(desc)));

我想要过滤器

match(lang) && match(name) && match(desc)

但是使用上面的代码,我得到

match(lang) || match(name) || match(desc)

如何验证这三个不同的 hasProperty 匹配器?

您可以使用 allOf 匹配器。

assertThat(complexObjectList,
  Matchers.<ComplexObject>hasItem(allOf(
    hasProperty("lang", equalTo(lang)),
    hasProperty("name", equalTo(name)),
    hasProperty("desc", equalTo(desc))));