java - JUnit assertEquals for double with percentage delta

标签 java unit-testing junit

在 JUnit 中, double 的 assertEquals 采用绝对增量。但是百分比值不是比绝对值更适合 margin 吗?当比较两个大值时,很可能由于四舍五入而产生的误差(如果有的话)将导致最后一个有效数字与指数无关。在这种情况下,绝对增量没有帮助,是吗?

这并不难,我写了一个,但只是好奇为什么 JUnit 没有那个功能。我错过了什么吗?

最佳答案

视情况而定。如果你有一个固定的精度,例如两位小数你可能想要一个 0.5e-2 的增量,但是如果你有一个未知的精度并且你想要有效数字你可能需要更复杂的东西,比如

assertEquals(expected, actual, Math.abs(expected) / 1e3);

相对误差的问题是很难知道它是相对于预期的、实际的还是两者的某种组合。

关于java - JUnit assertEquals for double with percentage delta,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17236915/

相关文章:

unit-testing - grails-测试delete()

java - 如何检查 Java 类是否包含 JUnit4 测试?

java - easymock 如何模拟/设置公共(public)最终变量

java - 如何进行单元测试以检查日期时间的格式?

java - 在公共(public)方法中拦截私有(private)方法返回的对象

java - Gradle 找不到 JUnit 测试

java - 为什么 FetchType.EAGER 在单元测试中不起作用?

java - 添加固定的最小/最大值

java - 按钮的新 setText 属性无缘无故出现空指针异常

java - HashMap 有重复并导致 gridview 中图像重复