JUnit测试另一个使用fail()的方法

时间:2015-03-27 12:39:36

标签: java junit

我们有一个相当复杂的对象,它是调用我们的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”时,我将无法通过测试。换句话说,我希望测试失败,这应该没问题。

这可能吗?如果可以,怎么做?

2 个答案:

答案 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
}