单元测试,如果差异不大于1,assert等于



我是单元测试新手。我用Junit4,我必须比较两个双数。但如果差值不大于1,则应该通过。例如:

Assert.assertEquals(240, 241); //should pass
Assert.assertEquals(240, 239); //should pass
Assert.assertEquals(240, 242); //should fail
Assert.assertEquals(240, 238); //should fail

有办法实现它吗?

读取您使用的方法的javadoc:

@Deprecated`  
public static void assertEquals(double expected,
double actual)

弃用。请使用asserequals (double expected, double actual, double epsilon)

它告诉您该方法已被弃用。更亲切的是,它告诉我们用什么更好的方法来代替。

public static void assertEquals(double expected,
double actual,
double delta)

断言两个双精度数或浮点数在一个正增量内相等。

你看,这个方法完全符合你的需要。所以你可以简单地使用:

Assert.assertEquals(240, 241, 1.0); //will pass
Assert.assertEquals(240, 239, 1.0); //will pass
Assert.assertEquals(240, 242, 1.0); //will fail
Assert.assertEquals(240, 238, 1.0); //will fail

除了舍甫琴科建议使用Assert.assertEquals(a, b, 1.0);

请检查assertTrue

Assert.assertTrue(Math.abs(240 - 241) <= 1)

最新更新