2011-09-26 53 views
29

我需要比较两个值之间的断言:一个字符串,另一个是浮动 所以我转换为浮动然后尝试拨打assertEquals(val1,val2)绳子,但这个没有被授权,我猜测,assertEquals不接受float作为参数。JUnit断言:使花车

在这种情况下,我的解决方案是什么?

回答

63

你必须为浮动提供了一个三角洲断言:

Assert.assertEquals(expected, actual, delta) 

虽然Δ在最大差值(DELTA)预期与实际针对这两个数字仍然被认为是相等的。

Assert.assertEquals(0.0012f, 0.0014f, 0.0002); // true 
Assert.assertEquals(0.0012f, 0.0014f, 0.0001); //false 
5

0.0F的增量值也适用,因此对于老式的 “==” 比较(谨慎使用!),你可以写

Assert.assertEquals(expected, actual, 0.0f); 

,而不是

Assert.assertEquals(expected, actual); // Deprecated 
Assert.assertTrue(expected == actual); // Not JUnit 

我喜欢JUnit确保您真正考虑“delta”的方式,它在真正微不足道的情况下应该只有0.0f。

+0

我建议使用0.0f(包括带粗体文本的答案编辑)而不是其他语言,因为它更具语义。我不知道这个问题,0.0f可能导致我理解什么是打算。以不赞成的或“不是JUnit”的方式,它就不太明显。 – ElMesa