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



我们有一个相当复杂的对象,它是调用drools引擎的结果。为了测试JUnit的规则,我们创建了一个RulesTestHelper类,该类提供了一个方法"assertOurObject(OurObject expected, OurObject actual)",并对OurObject的元素进行了许多断言(通过编写自己的Matcher可能会更好地解决这个问题,但我们还没有走那么远)。

现在,在我们的方法"assertOurObject"中,如果任何对象为空,则进行第一次检查,如下所示:

    if (expected == null || actual == null)
      fail("Expected or actual is null");

现在,我想对这个方法进行JUnit测试,并断言当我将两个对象中的一个设置为"null"时,我将无法通过测试。换句话说,我预计测试会失败,这应该没问题

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

如果您不想更改代码,可以使用类似Anderson Vieira所说的解决方案,而是使用

@Test(expected=AssertionError.class)

junit fail()方法抛出一个AssertionError,您可以特别期待

当这种情况发生时,你可以抛出一个异常,并通过用注释来告诉测试它

@Test(expected=NullPointerException.class)
public void testShouldFailIfAnyObjectIsNull() {
    ... // do something
    if (expected == null || actual == null) {
        throw new NullPointerException();
    }
    ... // do something
}

最新更新