assertEquals терпит неудачу для эквивалентных объектов Джексона, созданных различными способами - PullRequest
0 голосов
/ 28 января 2020

Поэтому мне интересно, почему два объекта терпят неудачу в моем модульном тесте (Junit 5), когда они создаются по-разному.

Первый способ:

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>

Далее, если я затем отредактирую утверждение так:

Assertions.assertEquals(expectedOutput, mapper.readTree(output.toString()));

Это пройдет. Итак, какая концепция приводит к провалу первого утверждения?

1 Ответ

1 голос
/ 28 января 2020

assertEquals вызовет этот метод, чтобы определить, равны ли два объекта:

 private static boolean isEquals(Object expected, Object actual) {
        return expected.equals(actual);
    }

Я бы взглянул на метод equals() в JsonNode, чтобы увидеть, что проверяется.

...