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

Dra*_*gon 4 java junit

不推荐使用双精度的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*/
}
Run Code Online (Sandbox Code Playgroud)

以下是我收到的3个双值,我想用JUnit检查:110.42,2760.5和10931.58.JUnit测试应该如何使用断言?我在一个方法中计算得到它们:

processor.calcPossibleValue(allowed_percentage){return /*Some weird formulae here*/;}
Run Code Online (Sandbox Code Playgroud)

Jon*_*uis 10

您需要在assertEquals调用中添加第四个参数:两个双精度应被视为"相等"的阈值.你的电话应该是这样的:

assertEquals("Wrong max possible value for %" + percentage, 110.42,
        processor.calcPossibleValue(percentage), 0.01);
Run Code Online (Sandbox Code Playgroud)

上述调用将指示如果返回的值processor.calcPossibleValue(percentage)在±0.01之内110.42,则认为这两个值相等.您可以更改此值,使其尽可能小到应用程序所需的值.

有关更多信息,请参阅JUnit文档.