【发布时间】:2010-12-20 08:38:09
【问题描述】:
Java assert 语句在 JUnit 测试套件中没有失败,因为在 JUnit 的 JVM 实例中未启用断言,所以我已经被这些语句所困扰。需要明确的是,这些是实现内部的“黑盒”断言(检查不变量等),而不是 JUnit 测试本身定义的断言。当然,我想在测试套件中捕获任何此类断言失败。
显而易见的解决方案是非常小心在我运行 JUnit 时使用-enableassertions,但我更喜欢更健壮的解决方案。一种替代方法是将以下测试添加到每个测试类:
@Test(expected=AssertionError.class)
public void testAssertionsEnabled() {
assert(false);
}
有没有更自动的方法来完成这项工作? JUnit 的系统范围配置选项?我可以在setUp() 方法中进行动态调用吗?
【问题讨论】:
-
只是一个一般性问题。如果你真的想对你的代码进行彻底的单元测试,你不应该在启用和不启用断言的情况下进行测试吗?断言非常有用的一件事是引入了意想不到的副作用。
-
顺便说一句。你是如何运行 JUnit 测试用例的?如果你有一些构建管理器(ant、maven),默认添加这个开关应该很简单
-
@Alexander:这不是一个坏主意。 @jitter:你当然是对的。 Maven 似乎默认启用断言。我之前没有注意到 Eclipse 对此有偏好设置。问题是这些设置可以在你背后改变......
-
您考虑过我重新编写的答案吗?我为您的问题提出了三种可能的解决方案,它们都有效(经过测试)
标签: java junit assertions