我需要进行单元测试。被测试的方法返回一个ImmutbaleMap,我需要能够将其与已有的方法进行比较。一种方法是获取这两个键集(keySets()),遍历它们并比较从两个映射返回的这些键的值。但是,对我而言,这似乎效率不高。有没有更好/更好的方法来做到这一点?

最佳答案

补充@NPE的答案...

由于您的值不能正确实现.equals() / .hashCode(),因此在地图上执行简单的等于将不起作用。但是你用番石榴;因此,您可以选择实现Equivalence

这意味着,如果您的值的类别为Foo


您需要实现Equivalence<Foo>
您的地图必须是Map<X, Equivalence.Wrapper<Foo>>


这样,您就可以使用Map.equals()

您必须使用等效项的.wrap()方法添加值。有关Equivalence实现的示例,请参见here

07-24 20:17