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