【发布时间】:2015-03-27 12:39:36
【问题描述】:
我们有一个相当复杂的对象,它是调用我们的 drools 引擎的结果。
对于 JUnit 测试我们的规则,我们创建了一个 RulesTestHelper 类,它提供了一个方法 "assertOurObject(OurObject expected, OurObject actual)" 并对 OurObject 的元素执行许多断言(这可能通过编写我们自己的 Matcher 来解决,但我们还没有那么远)。
现在在我们的方法“assertOurObject”中,首先检查是否有任何对象为空,如下所示:
if (expected == null || actual == null)
fail("Expected or actual is null");
现在我想对这个方法进行 JUnit 测试,并断言当我将两个对象之一设置为“null”时,我将无法通过测试。所以换句话说,我预计测试会失败,这应该没问题。
这可能吗?如果可以,怎么做?
【问题讨论】:
-
那么你想写一个测试来测试测试吗?从 Java 7 开始使用
Objects.requireNonNull(expected);怎么样。如果预期为空,它将抛出 NPE,您可以通过说您希望抛出 NPE 来轻松地使用 JUnit 进行测试。 -
当你向方法发送一个空对象时会发生什么吗?您可以对这一事实进行 junit 测试。
-
由于此更改可能会影响所有测试,因此我建议您创建一个新方法,其中一个参数可能为
null,否则测试必须失败。这更容易理解和维护。