当前位置: 首页 > 面试题库 >

JUnit断言:在浮点数之间进行断言

虞裕
2023-03-14
问题内容

我需要比较两个值:一个是字符串,另一个是float,因此我将字符串转换为float,然后尝试调用,assertEquals(val1,val2)但这未经授权,我猜assertEquals不接受float作为参数。

在这种情况下,对我有什么解决方案?


问题答案:

您必须为Floats的断言提供一个增量:

Assert.assertEquals(expected, actual, delta)

增量是期望值与实际值之间的最大差异(delta),对于这两个数字,仍将其视为相等。

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


 类似资料:
  • 问题内容: 今天,我看到了一个带有Java断言而不是JUnit断言的JUnit测试用例-相对于另一个而言,优先选择一个优点还是缺点? 问题答案: 在JUnit4中,JUnit断言引发的异常(实际上是Error)与java 关键字(AssertionError)引发的错误相同,因此它与堆栈跟踪完全相同,除了您无法分辨出其区别。 话虽这么说,断言必须在JVM中使用特殊标志运行,导致许多测试似乎通过了,

  • 有没有一种优雅的方法来断言数字相等而忽略它们的类?我想在JUnit测试框架中使用它,但例如 因Java . lang . assertion错误而失败:应为:java.lang.Integer 我希望在某个地方有一个很好的方法,只比较值,并与int,long,float,byte,double,BigDecimal,BigInteger一起工作...

  • 有没有Hamcrest可以让我明确断言,返回对象的的方法的结果至少有一个对象包含具有特定值的属性? 例如: 测试下的方法返回一个的集合。我需要断言至少有一个人叫彼得。

  • 我试着 我在调试时获得和是。 如何在使用时断言大于条件

  • JUnit 5中是否有任何机制可以在测试中运行所有assert,即使中间的assert失败?例如: 我的意图是运行所有断言,并跟踪失败的只是第二个,而不是第三个和第一个。

  • 我正在使用JUnit自动化功能测试。我遇到了一个问题:如果我遵循规则“每个测试方法一个(重要的)断言”,那么每个测试用例最终会有一堆6行测试方法(17个是迄今为止最大的数字)。如果我将它们全部放入一个测试方法中,我必须注释掉失败的断言,否则一半的测试永远不会启动。 我不喜欢第一种方式,因为它启动浏览器的次数太多,而且浏览器启动登录/注销似乎比测试运行本身更“昂贵”和耗时。 第二种方法也不好,因为它