看起来在 junit 5 中完全 double 不被认为是相等的 以下代码在 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>
此错误可能令人困惑。我最初将其解释为我的 delta 高于 0.0,并且当值相等时非零 delta 失败。 (这确实很奇怪)
错误消息实际上意味着提供的增量 (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);
关于java - Junit 5 的 assertEquals 与 double 的精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53458934/