首页 > 解决方案 > 我将如何在单元测试中深入比较两个地图

问题描述

我目前正在努力确保 2 个地图在单元测试中具有相同的键/值,同时忽略一些键。这应该递归应用,因为地图中的一个值可能又是一个地图 - 所以我想检查整个树。

也许一个例子在这里有帮助:

Map<String, Object> mapA = Map.of("foo", "bar", "description", "foobar", "submap", Map.of("subFoo", "subBar", "description", "subFooBar"));
Map<String, Object> mapB = Map.of("foo", "bar", "description", "barfoo", "submap", Map.of("subFoo", "subBar", "description", "subBarFoo"));

就测试结果而言,这 2 个映射应被视为相等。

我试图通过以下方法解决这个问题 - 但不幸的是它不起作用'

assertThat(mapA)
        .usingRecursiveComparison()
        .ignoringFieldsMatchingRegexes(".*description")
        .ignoringFields("description")
        .isEqualTo(mapB);

有谁知道如何解决这个问题?

标签: javajunitassertj

解决方案


推荐阅读