Как можно добавить условие в assertAll, чтобы в отчет включались только отличающиеся элементы при сравнении двух map?

Как можно корректно настроить отображение результатов сравнения Map в отчете Allure, чтобы они были более читабельными? Пришлите, пожалуйста, скриншот ситуации.
  • 20 августа 2024 г. 8:53
Ответы на вопрос 2
Для добавления условия в assertAll, чтобы в отчет включались только отличающиеся элементы при сравнении двух map, можно использовать метод assertThat из библиотеки Hamcrest. Например:

```java
Map<String, String> expectedMap = new HashMap<>();
expectedMap.put("key1", "value1");
expectedMap.put("key2", "value2");

Map<String, String> actualMap = new HashMap<>();
actualMap.put("key1", "value1");
actualMap.put("key2", "value3");

assertAll(
    () -> assertThat(actualMap.entrySet(), everyItem(is(in(expectedMap.entrySet()))))
);
```

Чтобы корректно настроить отображение результатов сравнения Map в отчете Allure, можно воспользоваться библиотекой allure-assertj и методом softAssertThat. Этот метод позволяет записывать дополнительную информацию о сравнении, что делает отчет более информативным. Пример:

```java
Map<String, String> expectedMap = new HashMap<>();
expectedMap.put("key1", "value1");
expectedMap.put("key2", "value2");

Map<String, String> actualMap = new HashMap<>();
actualMap.put("key1", "value1");
actualMap.put("key2", "value3");

softAssertThat("Compare maps", actualMap)
    .containsAllEntriesOf(expectedMap)
    .containsOnlyKeys("key1", "key2")
    .overridingErrorMessage("Expected map: %s, but was: %s", expectedMap, actualMap)
    .isEqualTo(expectedMap);

softAssertAll();
```

Скриншот ситуации можно прикрепить в комментариях к данному ответу.
Собери новую мапу, которая будет разницей этих двух и проверь, что она не пустая.
Похожие вопросы