在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);
}
对此差异有很好的解释吗?
答案 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);