java - 具有双值的 hashMap 的 Junit 测试

标签 java unit-testing testing junit

我正在使用 Junit 断言我在调用方法后收到的预期和实际 HashMap 之间的相等性。代码如下所示:

Assert.assertEquals(expectedKlassToScore, klassToScore);

在这里expectedKlassToScoreklassToScore类型为 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/

相关文章:

java - KD-Tree 点重复并给我错误的输出

java - 使用 JAVA 等效的 OpenSSL 命令

javascript - Jest +酵素。无法读取未定义的属性 '_isMockFunction'。模拟箭头的keyDown

将 valgrind 的输出捕获到编程中

python - 在 Python 中对整个应用程序进行回归测试

java - AES/GCM/NoPadding AEADBadTagException 异常

java - 下一个/上一个编辑位置 Eclipse 快捷方式 - 和 Netbeans?

java - 如何准备和提供测试数据

javascript - 自定义事件参数未在测试中正确传递

testing - 如何从 Botium 客户端将 session 属性传递给 Lex Bot?