Assert Equals(double,double,delta)问题

时间:2016-01-29 07:34:54

标签: java double assert epsilon

我正在尝试创建一个断言等于(double,double,epsilon)方法。我创建了它,出于某种原因,当我运行我的测试仪时,该方法失败了。

public static void assertEquals(double expect, double actual, double epsilon){
    totalAssertMethods ++;
    double difference = (Math.abs(expect - actual));
    if (difference <= epsilon){

    } else {
        totalAssertMethodsFailures ++;
        Throwable throwable = new Throwable("Error: Expected X +/-E, found Y");
        throwable.printStackTrace();
    }
}

我认为问题在于,测试中期望值与实际值之间的差异仅与epsilon的差值大约为0.000001。有谁知道如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

尝试将您的值四舍五入到一定的精度:

double difference = Math.round(Math.abs(expect - actual) * 100000D) / 100000D;

也为epsilon做同样的事情。

double finalEpsilon = Math.round(epsilon * 100000D) / 100000D;

答案 1 :(得分:0)

有点晚了,但也许对其他人有用:你现在可以使用assertj AbstractDoubleAssert

assertThat(actual).isCloseTo(expected, Percentage.withPercentage(0.999999));