Junit 5的assertEqual的精度翻倍

时间:2018-11-24 14:02:28

标签: java junit junit4 junit5

在junit 5中,看起来像精确双打不被视为相等 以下代码在junit 5中失败

public void testDouble() {        
    org.junit.jupiter.api.Assertions.assertEquals(87.91622222222225d, 87.91622222222225d, 0.0);
}

与junit 4中的相同,通过了测试

public void testDouble() {
    org.junit.Assert.assertEquals(87.91622222222225d, 87.91622222222225d, 0.0);
}

对此差异有很好的解释吗?

1 个答案:

答案 0 :(得分:0)

要详细说明评论中的答案,给出的错误消息是:

org.opentest4j.AssertionFailedError: positive delta expected but was: <0.0>

此错误可能会引起混淆。我最初将其解释为意味着我的增量大于0.0,并且当值相等时非零增量将失败。 (这确实很奇怪)

错误消息实际上意味着提供的增量(0.0)是不受支持的错误值。它与提供的两个可能相等或不相等且未比较的值无关。

解决方案是使用没有delta参数的方法,或者提供非零delta,使用double可能更安全。这些都应该起作用:

org.junit.jupiter.api.Assertions.assertEquals(87.91622222222225d, 87.91622222222225d);
org.junit.jupiter.api.Assertions.assertEquals(87.91622222222225d, 87.91622222222225d, 0.00000000001d);