春季测试侦听器:如何知道我的测试是否失败?

时间:2019-03-26 16:36:49

标签: java spring testng spring-test

我有许多使用Spring Test框架编写的非常复杂的集成测试。我想做的是在测试失败的情况下从服务器日志文件中获取最后n行。

为此,我创建了测试:

@TestExecutionListeners({LogFetchingTestListener.class})  
public MyComplexTestClass extends AbstractTestNGSpringContextTests {
    @Test
    public void myComplexTest() {
        // Here goes the test logic...
    }
}

和测试监听器:

public class LogFetchingTestListener extends ABstractTestExecutionListener {
    @Override
    public void afterTestExecution(TestContext context) {
        // Use some spring beans to get entities to connect to servers
    }
}

一切都很好,但是我无法在TestContext或其他地方找到属性,这会让我知道我的测试是否失败。

这非常关键,因为我进行了大量测试,并且获取成功运行的测试用例的日志完全没有意义。

Spring是否在测试侦听器中提供此信息?如果不是,是否有任何解决方法?

谢谢。

1 个答案:

答案 0 :(得分:0)

我建议您改写afterTestMethod(TestContext)而不是afterTestExecution(TestContext),因为前者将在测试类的@AfterMethod个生命周期方法之后执行。

要获取异常(即测试失败的原因),您只需访问testContext.getTestException()