如何使用assertEquals 和 Epsilon 在 JUnit 中断言两个双精度数?

2024-06-20

不推荐使用双打的assertEquals。我发现应该使用带有Epsilon的形式。这是因为双打不可能100%严格。但无论如何我需要比较两个双打(预期结果和实际结果),但我不知道该怎么做。

目前我的测试如下:

@Test
public void testCalcPossibleDistancePercentageCount() {
    int percentage = 100;
    assertEquals("Wrong max possible value for %" + percentage, 110.42, processor.calcPossibleValue(percentage));
    percentage = 75;
    /*corresponding assertions*/
}

以下是我收到的 3 个双精度值,我想用 JUnit 检查它们:110.42、2760.5 和 10931.58。 JUnit 测试应该如何进行断言?我收到它们作为方法的计算结果:

processor.calcPossibleValue(allowed_percentage){return /*Some weird formulae here*/;}

您需要添加第四个参数assertEqualscall:阈值,在该阈值内,两个双精度数应被视为“相等”。您的调用应如下所示:

assertEquals("Wrong max possible value for %" + percentage, 110.42,
        processor.calcPossibleValue(percentage), 0.01);

上面的调用表明,如果返回的值processor.calcPossibleValue(percentage)在 ± 0.01 范围内110.42,则认为两个值相等。您可以更改此值,使其尽可能小,以满足您的应用程序的需要。

See the JUnit 文档 http://junit.sourceforge.net/javadoc/org/junit/Assert.html#assertEquals%28java.lang.String,%20double,%20double,%20double%29了解更多信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用assertEquals 和 Epsilon 在 JUnit 中断言两个双精度数? 的相关文章

随机推荐