测试夹具的一部分检查测试期间没有记录错误:
@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
或类似的东西,但我想避免重复。
答案 0 :(得分:2)
为什么你不能在每个测试方法中添加assertTrue
或assertFalse
?
你的解决方案在我看来太复杂了。
使用@After
注释的方法应该用于释放资源。
答案 1 :(得分:0)
使用catch-exception,您可以在方法内移动检查异常,而不是在方法之外:
@Test
public void shouldExplode() throws Exception {
catchException(this).doExplodingStuff();
assertTrue(caughtException() instanceof IllegalStateException);
}