Java 如何使用hamcrest从Junit中的列表断言相同的响应

Java 如何使用hamcrest从Junit中的列表断言相同的响应,java,junit,hamcrest,Java,Junit,Hamcrest,我想断言是否每个对象都包含相同的值,例如:在 下面的代码列表中有20个响应对象,我希望 每个响应的“状态”应为“确定”,而“消息”应为“成功” 在测试时,在列表中。 但是下面的代码只检查列表中的第一个响应对象。我如何迭代其余部分并检查每一个 响应而不写入冗余代码 @测试 public void testName(){ List responseList=new ArrayList(); Response response1=新响应(“确定”、“成功”);//只能迭代此对象 Response re

我想断言是否每个对象都包含相同的值,例如:在 下面的代码列表中有20个响应对象,我希望 每个响应的“状态”应为“确定”,而“消息”应为“成功” 在测试时,在列表中。 但是下面的代码只检查列表中的第一个响应对象。我如何迭代其余部分并检查每一个 响应而不写入冗余代码

@测试
public void testName(){
List responseList=new ArrayList();
Response response1=新响应(“确定”、“成功”);//只能迭代此对象
Response response2=新的响应(“确定”、“成功”);
响应响应3=新响应(“确定”、“成功”);
.................................................
响应响应20=新响应(“确定”、“成功”);
addAll(Arrays.asList(response1,response2,response3,…,response20));
资产(responseList,Matchers.hasItems(allOf,Matchers.hasProperty(“status”),is(“OK”)),
Matchers.hasProperty(“消息”,即(“成功”));

我终于找到了解决方案:我必须检查everyItem(),它对我有效

资产(items,Matchers.everyItem(allOf(Matchers.hasProperty,简称“firstName”),is(“test”)), hasProperty(“lastName”,是(“best”;)

@Test
  public void testName(){
    List<Response> responseList = new ArrayList<Response>();
    Response response1 = new Response("OK","Success");  // only able to iterate this object
    Response response2= new Response("OK","Success");
    Response response3= new Response("OK","Success");
    .................................................
    Response response20 = new Response("Ok","Success");

    responseList.addAll(Arrays.asList(response1,response2,response3,....,response20));

    assertThat(responseList,Matchers.hasItems(allOf(Matchers.<Item>hasProperty("status",is("OK")),
        Matchers.<Item>hasProperty("message",is("Success")))));