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

断言与JUnit断言

申高峯
2023-03-14
问题内容

今天,我看到了一个带有Java断言而不是JUnit断言的JUnit测试用例-相对于另一个而言,优先选择一个优点还是缺点?


问题答案:

在JUnit4中,JUnit断言引发的异常(实际上是Error)与java
assert关键字(AssertionError)引发的错误相同,因此它assertTrue与堆栈跟踪完全相同,除了您无法分辨出其区别。

话虽这么说,断言必须在JVM中使用特殊标志运行,导致许多测试似乎通过了,仅仅是因为有人在运行JUnit测试时忘记使用该标志配置系统-不好。

通常,因此,我认为使用JUnit
assertTrue是更好的做法,因为它可以保证测试运行,确保一致性(有时使用assertThat或不是Java关键字的其他断言),以及JUnit的行为是否断言应该在将来进行更改(例如,加入某种html" target="_blank">过滤器或其他将来的JUnit功能),您的代码将能够利用这一点。

Java中assert关键字的真正目的是能够将其关闭而不会增加运行时间。这不适用于单元测试。



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

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

  • 有时候我们需要匹配后面跟着特定模式的一段模式。比如,我们要从 1 turkey costs 30€ 这段字符中匹配价格数值。 我们需要获取 € 符号前面的数值(假设价格是整数)。 那就是前瞻断言要做的事情。 前瞻断言 语法为:x(?=y),它表示 “匹配 x, 仅在后面是 y 的情况"” 那么对于一个后面跟着 € 的整数金额,它的正则表达式应该为:\d+(?=€)。 let str = "1 tu

  • 问题内容: 我需要比较两个值:一个是字符串,另一个是float,因此我将字符串转换为float,然后尝试调用,但这未经授权,我猜不接受float作为参数。 在这种情况下,对我有什么解决方案? 问题答案: 您必须为Floats的断言提供一个增量: 增量是期望值与实际值之间的最大差异(delta),对于这两个数字,仍将其视为相等。

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

  • 一个人如何断言在一个游戏的主体内的内容!JSON操作结果值?我正在从一个操作返回一个新的(甚至是空的)JSON ObjectNode,并试图在单元测试的结果中对其进行断言,但在response.wrappresult.body中没有看到值(null或其他)。 例如,在我的操作中,如果返回一个null JSON对象节点, 或者如果返回测试值, 然后我根据结果写一个测试, 谢了!