我需要比较两个值:一个是字符串,另一个是浮点数。因此,我将字符串转换为浮点数,然后尝试调用assertEquals(val1,val2)
方法进行比较,但这是不允许的。我猜测assertEquals
不接受浮点数作为参数。
在这种情况下,我的解决方案是什么?
对于浮点数,您必须提供一个 delta 值来进行断言:
Assert.assertEquals(expected, actual, delta)
当 delta 是期望值和实际值之间的最大差异(delta),在此差异范围内两个数字仍被认为相等。
Assert.assertEquals(0.0012f, 0.0014f, 0.0002); // true
Assert.assertEquals(0.0012f, 0.0014f, 0.0001); //false
即使是旧式的“==”比较(请谨慎使用!),值为0.0f也可以正常工作,因此您可以编写以下代码:
Assert.assertEquals(expected, actual, 0.0f);
代替
Assert.assertEquals(expected, actual); // Deprecated
Assert.assertTrue(expected == actual); // Not JUnit
我喜欢JUnit的做法,它确保你真的考虑了“delta”,在非常琐碎的情况下应该只是0.0f。