我照例上产生地图作为输出代码工作。随着代码的变化,我必须确保代码变化产生相同的地图输出作为旧代码。所以我所做的是我连载所需的输出映射到JSON文件,现在写的JUnit测试案例我跑,看看是否通过新代码创建的映射与从JSON deserialised地图匹配。然而,当它不匹配就变得很难准确地指出,在这关键之眼福。例如,请考虑下面的代码:知道哪里地图在它们的内容的不同之处常规
def nestedmapeq1 = ["key1":"val1","key2":"val2", "key3": ["k1":"v1","k2":["v2"]]]
def nestedmapeq2 = ["key1":"val1","key2":"val2", "key3": ["k1":"v1","k2":["v2","v3"]]]
assert nestedmapeq1.equals(nestedmapeq2)
输出这里如下:
正如你可以看到不同的是,关键k2
嵌套列表在nestedmapeq2
而两个元素``nestedmapeq``中只有一个元素
在这种情况下,查看嵌套键/列表具有不同内容的输出很简单。但是,当输出是非常大的,比如说含200+地图列表,或者说图的200多个键,就几乎不可能从那里不同之处在于输出来推断。
我可以写一个递归泛型函数做相同的,只是想知道,如果这样美妙的事情已经存在,可以明确地指出了列表索引和地图键,其内容是不同的。如果它需要两个对象作为参数,既可以是列表也可以是映射,并检查它们的内容是否相同,即使这样的泛型函数的Java实现也可以完成这项工作。 )
我不相信这样的事情已经存在... –
'assert'用'.equals'上'Map'做检查内容是否相同。对?缺少的仅仅是能够明确说明内容不同的特征? – Mahesha999