Есть 2 json, есть несколько путей, которые необходимо применить к обоим json. Затем эти jsons должны сравниваться с помощью некоторого утверждения в тесте. Идеальное решение должно быть:
Stirng actualJson - ....
Stirng expectedJson - ....
Stirng actualJsonFiltered - filter(actualJson, lisofJsonPath);
Stirng expectedJsonFiltered - filter(expectedJson, lisofJsonPath);
JSONAssert.assertEquals(actualJsonFiltered, expectedJsonFiltered);
Что является не решением:
1. Любой такой код:
for(String p: lisofJsonPath) {
assertEquals(JsonPath.read(actualJson, p), JsonPath.read(expectedJson , p);
}
Необходимо отфильтровать jsons и показать / потерпеть неудачу со всем существующим путем Покажите ошибку, что несколько путей не совпадают. Не одно за другим совпадение пути json.
org.assertj.core.api.SoftAssertions
- также не является решением, так как из сообщения трудно понять, какие активы потерпели неудачу.
harcrest allOf
/ anyOf
также не является решением, так как он дает сбой при первой согласованной сборке, не объединяя их.
P.S. Любые предложения по визуализации json diff приветствуются. Идеальный способ выглядит как это . (но это в javascript)