断言与JUnit断言?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (83)

我看到了一个JUnit测试用例,其中包含一个java断言,而不是JUnit断言 - 相对于另一个而言,是否有显着的优点或缺点?

提问于
用户回答回答于

在JUnit4中,由JUnit声明引发的异常(实际上是Error)与由java assert关键字(AssertionError)引发的错误相同,所以它assertTrue与堆栈跟踪完全相同,并且不能区分它们。

这就是说,断言必须在JVM中运行一个特殊的标志,导致许多测试似乎通过,因为有人忘了在JUnit测试运行时忘记使用该标志来配置系统 。

总的来说,因为这个原因,我认为使用JUnit assertTrue是更好的做法,因为它确保测试运行,确保一致性(有时使用assertThat或其他断言不是java关键字),并且如果JUnit的行为声明应该在将来进行更改(例如挂钩某种过滤器或其他未来的JUnit功能),你的代码将能够利用该功能。

java中assert关键字的真正目的是能够关闭它,而不会造成运行时损失。这不适用于单元测试。

用户回答回答于

我更喜欢JUnit断言,因为它们提供了比内置assert语句更丰富的API ,更重要的是,不需要明确启用JVM assert,这需要-eaJVM参数。

扫码关注云+社区

领取腾讯云代金券