Java 对于以不同方式创建的等效Jackson对象,assertEquals失败
所以我想知道为什么在我的单元测试(JUnit5)中,当两个对象的创建方式不同时,它们会失败 第一种方式:Java 对于以不同方式创建的等效Jackson对象,assertEquals失败,java,junit,jackson-databind,Java,Junit,Jackson Databind,所以我想知道为什么在我的单元测试(JUnit5)中,当两个对象的创建方式不同时,它们会失败 第一种方式: static ObjectMapper mapper = new ObjectMapper(); JsonNode output = mapper.convertValue(jsonTransform, JsonNode.class); 第二种方式: JsonNode expectedOutput = mapper.readTree(jsonString); 然后断言: Assertio
static ObjectMapper mapper = new ObjectMapper();
JsonNode output = mapper.convertValue(jsonTransform, JsonNode.class);
第二种方式:
JsonNode expectedOutput = mapper.readTree(jsonString);
然后断言:
Assertions.assertEquals(expectedOutput, output);
失败:
is org.opentest4j.AssertionFailedError: expected: com.fasterxml.jackson.databind.node.ObjectNode@d6e7bab<jsonString> but was: com.fasterxml.jackson.databind.node.ObjectNode@5fa07e12<jsonString>
它会过去的。那么,是什么概念导致第一个断言失败呢?
assertEquals
将调用此方法来查找两个对象是否相等:
private静态布尔相等(预期对象,实际对象){
预期回报。等于(实际);
}
我想看看
JsonNode
中的equals()
方法,看看检查的是什么。传递到convertValue中的“jsonTransform”变量是什么类型的?你能提供一个吗?@djharten它属于Object类型。
Assertions.assertEquals(expectedOutput, mapper.readTree(output.toString()));