gpt4 book ai didi

java - 比较 JUnit 中的 2 个对象

转载 作者:行者123 更新时间:2023-12-01 20:00:08 30 4
gpt4 key购买 nike

我正在尝试学习JUnit并且我已经练习了一段时间了,现在我在比较两个对象时遇到了问题。可以将其视为 JSON 对象。我正在使用 GSON 来实现此目的

例如,我有一个 JSON 字符串,我已将其转换为一个对象,并且我有另一个完全相同的 JSON 对象,现在当我写 assertEquals 时对于这两个对象,它返回类似

java.lang.AssertionError:   
Expected :Data@2ret9593
Actual :Data@7647qe21

由于它们是 JSON 对象,键值对的顺序可能不同,但我希望它检查它们并返回结果(如果它们相等或不相等),并忽略一些其值不被考虑但该字段很重要的字段,例如时间戳或动态生成的 ID 等

这不仅仅是 equal 方法,我在这里尝试比较 2 个 JSON 字符串并忽略测试时动态分配的一些字段

例如:

{"name": "ray", "age": "20"} == {"age": "20", "name": "ray", "timestamp": 03:10:54}

有什么办法可以实现我想要的吗?

最佳答案

您可以使用 JSONAssert 而不是将 JSON 反序列化为对象以方便比较以便在测试用例中进行有意义的“JSON 比较”。

例如:

String expected = "{"name": "ray", "age": "20"}";
String actual = "{"age": "20", "name": "ray"}"
JSONAssert.assertEquals(expected, actual, false);

在此示例中,strict 已设置为 false,这指示 JSONAssert 允许重新排序。

只需使用 JSONAssert download the JAR或者 - 如果使用 Maven - 将以下内容添加到项目的 pom.xml 中:

<dependency>
<groupId>org.skyscreamer</groupId>
<artifactId>jsonassert</artifactId>
<version>1.5.0</version>
<scope>test</scope>
</dependency>

并添加如下断言:

JSONAssert.assertEquals(expectedJSONString, actualJSON, strictMode);

更多示例 in the cookbook .

关于java - 比较 JUnit 中的 2 个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48279096/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com