Как получить тот же ответ из списка в Junit с помощью hamcrest

#java #junit #hamcrest

#java #junit #hamcrest

Вопрос:

Я хочу утверждать, содержит ли каждый отдельный объект одинаковое значение, например: в следующем коде у меня есть 20 объектов ответа в списке, и я ожидаю, что каждый ответ должен иметь «статус» «Ок», а «сообщение» — «успех» в списке во время тестирования. Но приведенный ниже код проверяет только первый объект ответа в списке. Как я могу выполнить итерацию для остальных из них и проверить каждый отдельный ответ, не записывая избыточный код.

 @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")))));
  

Ответ №1:

Наконец я нашел решение: я должен проверить everyItem(), и это сработало для меня

assertThat(items,Matchers.everyItem(allOf(Matchers.hasProperty(«FirstName»,is(«test»)), Matchers.hasProperty(«LastName»,is(«best»)))));