@Before和/或@After方法可以检查预期的参数吗?

时间:2013-11-08 09:46:45

标签: java unit-testing junit

测试夹具的一部分检查测试期间没有记录错误:

@After
public void testname() {
    if(accumulatedErrors()) {
        fail("Errors were recorded during test");
    }
}

但是对于预计会失败的测试,例如:

@Test(expected = IllegalStateException.class)
public void shouldExplode() throws Exception {
    doExplodingStuff();
}
@After方法应该反转检查:

@After
public void testname() {
    if (failureIsExpected()) {
        assertTrue("No errors were recorded during test", accumulatedErrors());
    } else {
        assertFalse("Errors were recorded during test", accumulatedErrors());
    }
}

有没有办法从expected方法检查已执行测试的@After参数?

当然,测试可以指定expectToFail=true或类似的东西,但我想避免重复。

2 个答案:

答案 0 :(得分:2)

为什么你不能在每个测试方法中添加assertTrueassertFalse? 你的解决方案在我看来太复杂了。 使用@After注释的方法应该用于释放资源。

答案 1 :(得分:0)

使用catch-exception,您可以在方法内移动检查异常,而不是在方法之外:

@Test
public void shouldExplode() throws Exception {
    catchException(this).doExplodingStuff();
    assertTrue(caughtException() instanceof IllegalStateException);
}