看起来确切的 double 在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);
}
对于这种差异是否有很好的解释?
最佳答案
为了详细说明评论中的答案,给出的错误消息是:
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);