我想在测试失败时获得通知。理想情况下,我想知道测试是通过我的 @ @后带注释的方法通过还是失败。我知道它们是一个可以用于此目的的Runlistener,但仅当我们使用JunitCore进行测试时才有效。是否有一种方法可以通知测试案例失败或与Runlistener类似的东西,可以与SpringJunit4ClassRunner一起使用?
Spring TestContext框架提供了可用于实现此目的的TestExecutionListener
SPI。
基本上,如果您实现TestExecutionListener
(或更好地扩展AbstractTestExecutionListener
),则可以实现afterTestMethod(TestContext)
方法。从传递的TestContext
中,您可以访问被抛出的异常(如果有)。
这是org.springframework.test.context.TestContext.getTestException()
的Javadoc:
获取在执行测试方法期间抛出的例外。
注意:这是一个可变特性。
返回:抛出的例外,如果没有例外,则无效 投掷
fyi:您可以通过@TestExecutionListeners
注释注册客户听众。
问:
sam
替代方案是junits内置的 TestWatcher
规则。
该规则使您可以选择要通知的内容。这是Junit GitHub文档的一个紧凑示例
@Test
public class WatcherTest {
@Rule
public final TestRule watcher = new TestWatcher() {
@Override
protected void failed(Throwable e, Description) {}
// More overrides exists for starting, finished, succeeded etc
};
@Test
public void test() {}
}