在JUnit测试中,如何在不考虑其类型的情况下断言两个数字相等?

时间:2014-01-16 14:51:23

标签: java junit

我想做的一个例子:

double delta = 0.000001d;
Number myNumber = resultOfSomeTestExecution();
Assert.assertEquals(5, myNumber, delta);

我想在合理的增量间隔内断言结果是5,或者至少接近5,但我不关心它是Integer,Long,Double,BigDecimal还是其他什么。是否有可以执行此操作的断言库?

2 个答案:

答案 0 :(得分:3)

每个Number实例都有一个doubleValue()方法,您可以将其应用于测试执行的结果。

double delta = 0.000001d;
Number myNumber = resultOfSomeTestExecution();
Assert.assertEquals(5, myNumber.doubleValue(), delta);

Number#doubleValue()是一个有效的选择,因为在处理整数和浮点数时不会失去精度。

答案 1 :(得分:1)

在myNumber上使用.doubleValue() - 它会起作用:

Assert.assertEquals(5,myNumber.doubleValue(),delta);