有 2 个 json,需要在两个 json 上应用多个路径。然后这些 json 应该通过一些断言在测试中进行比较。ide解决方案应该是:
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
也不是一个解决方案,因为它在第一次匹配的断言上失败,而不是结合它们。
PS任何关于 json diff 可视化的建议都是受欢迎的。理想的方式是这样的。(但这是在 javascript 中)