Java 单元测试,如果差异不大于1,则断言等于
我是单元测试新手。我使用Junit4,我必须比较两个双精度数字。但若差值不大于1,则应通过。 例如:Java 单元测试,如果差异不大于1,则断言等于,java,unit-testing,testing,junit4,Java,Unit Testing,Testing,Junit4,我是单元测试新手。我使用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 除了@Nikolai Shevch
Assert.assertEquals(240, 241); //should pass
Assert.assertEquals(240, 239); //should pass
Assert.assertEquals(240, 242); //should fail
Assert.assertEquals(240, 238); //should fail
除了@Nikolai Shevchenko建议使用
Assert.assertEquals(a、b、1.0)之外,还有什么方法可以实现它代码>
也请检查一下
Assert.assertTrue(Math.abs(240-241)阅读以下内容的javadoc:
不推荐使用。请改用assertEquals(双预期值、双实际值、双ε)
它告诉您此方法已被弃用。
更亲切的是,它告诉我们用它来代替
断言两个double或float在正增量内等于
你看,这种方法完全符合你的需要。所以你可以简单地使用:
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);
这不是一个好建议。它增加了一个无用的间接层次。如果有的话,您应该推荐assertThat
和hamcrest匹配器。当您知道这些,您将永远不需要另一个Assert。
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