我们有一个相当复杂的对象,它是调用我们的drools引擎的结果。
对于JUnit测试我们的规则,我们创建了一个RulesTestHelper类,它提供了一个方法"assertOurObject(OurObject expected, OurObject actual)"
,并对OurObject的元素做了很多断言(这可能通过编写我们自己的Matcher来解决,但我们还没有那么远)。
现在在我们的方法“assertOurObject”中,如果任何对象为null,则完成第一次检查,如下所示:
if (expected == null || actual == null)
fail("Expected or actual is null");
现在我想要JUnit测试这个方法并声明当我将两个对象中的一个设置为“null”时,我将无法通过测试。换句话说,我希望测试失败,这应该没问题。
这可能吗?如果可以,怎么做?
答案 0 :(得分:1)
如果您不想更改代码,可以使用类似于Anderson Vieira所说的解决方案,而是使用
@Test(expected=AssertionError.class)
junit fail()
方法会引发您可以特别期待的AssertionError
答案 1 :(得分:0)
当发生这种情况时,您可以抛出异常,并通过使用以下方法对其进行注释来告诉测试期望它:
@Test(expected=NullPointerException.class)
public void testShouldFailIfAnyObjectIsNull() {
... // do something
if (expected == null || actual == null) {
throw new NullPointerException();
}
... // do something
}