我正在使用 Junit 断言我在调用方法后收到的预期和实际 HashMap 之间的相等性。代码如下所示:
Assert.assertEquals(expectedKlassToScore, klassToScore);
在这里expectedKlassToScore
和 klassToScore
类型为 Map<MyObject, Double>
. HashMap 中的某些值在小数点后长达 16 位。我假设根据运行这些测试的机器,最后几位小数可能不准确 - 由于分数在硬件上的实现方式的性质。
如何修改我的断言语句以启用准确窗口,让测试在不同机器上通过?
最佳答案
public static void assertEqualsMapEpsilon(Map<Object,Double> expected, Map<Object,Double> actual, double epsilon) {
assertEquals(expected.size(), actual.size());
for(Map.Entry<Object,Double> value:expected.entrySet()){
Double actualValue = actual.get(value.getKey());
assertNotNull(actualValue);
assertEquals(value.getValue(), actualValue, epsilon);
}
}
关于java - 具有双值的 hashMap 的 Junit 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20092017/