我正在尝试创建一个断言等于(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。有谁知道如何解决这个问题?
答案 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));