我想在测试失败时收到通知。理想情况下,我想知道我的@After注释方法是否通过了测试。我知道它们是一个可以用于此目的的RunListener,但它只有在我们使用JunitCore运行测试时才有效。如果测试用例失败或有类似RunListener的东西可以与SpringJUnit4ClassRunner一起使用,有没有办法得到通知?
答案 0 :(得分:5)
Spring TestContext Framework提供了一个TestExecutionListener
SPI,可用于实现此目的。
基本上,如果您实施TestExecutionListener
(或更好地扩展AbstractTestExecutionListener
),则可以实施afterTestMethod(TestContext)
方法。从传递的TestContext
开始,您可以访问引发的异常(如果有的话)。
这是org.springframework.test.context.TestContext.getTestException()
的Javadoc:
获取在执行测试方法期间抛出的异常。
注意:这是一个可变属性。
返回:抛出的异常,如果没有异常,则返回null 抛出
仅供参考:您可以通过@TestExecutionListeners
注释注册您的客户监听器。
此致
萨姆
答案 1 :(得分:0)
另一种选择是JUnits内置TestWatcher
规则。
该规则允许您选择要通知的内容。以下是JUnit Github Docs
中的压缩示例@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() {}
}