【发布时间】:2015-08-08 21:51:01
【问题描述】:
Java 断言语句根据配置标志(例如,-ea)有选择地启用/禁用。我在网上读到,使用 JUnit 断言(例如,Assert.assertTrue),您不必担心自己管理断言配置。这到底是什么意思?要么:
1) JUnit 断言(与 Prod 代码混合在一起)永远不会被禁用。它们的行为就像 Validate 语句,并且总是运行。
或
2) JUnit 测试框架在运行 JUnit 测试时自动启用所有 JUnit 断言。每当应用程序/代码在 JUnit 之外运行时,JUnit 断言方法什么都不做。
或
3) 默认情况下,JUnit 断言始终处于启用/禁用状态,但有一个自定义配置/标志可用于禁用/启用它们
以上哪项是正确的?
--
编辑:稍微更改了措辞以消除歧义。
【问题讨论】:
-
JUnit 测试永远不会部署到生产环境中(因为它们不是应用程序的一部分),所以没关系。
-
JUnit 只能用于单元测试,不能用于产品
-
JUnit 断言和 Java 断言是完全不同的东西。 JUnit 断言是来自单元测试内部的简单方法调用。它们不存在于不使用 JUnit 的生产代码中。
-
@RvPr:恕我直言,与上面链接的 SO 答案没有冲突。这只是在不同情况下使用的“断言”一词。
assert关键字通常用于保护某些功能(根据意外输入值进行输入验证)。而 JUnit 断言用于检查某个功能的结果。 -
@RvPr:我还是不同意。第二个问题明确关注测试,而您询问生产代码。其次,我不建议使用
assert- 事实上我尽量避免使用它......
标签: java exception junit assert