【问题标题】:How to make testng listeners runs before the @AfterClass annotation?如何让 testng 监听器在 @AfterClass 注释之前运行?
【发布时间】:2020-04-16 11:55:53
【问题描述】:
场景 - 我有一个生成执行报告的侦听器。我想将生成的测试报告添加到数据库中。我在@AfterClass 注释中有一个函数,需要将生成的报告添加到数据库中。
我面临的问题 - 侦听器正在生成报告,只有 @AfterClass 方法被执行。
有没有办法让监听器在@Test 注释测试执行后生成报告并将生成的报告添加到@AfterClass 注释中的数据库中?
如果有更好的方法来实现这一点,请告诉我。
【问题讨论】:
标签:
java
selenium
testng
appium
listener
【解决方案1】:
如果您使用TestListenerAdapter 实现了自己的测试侦听器,则您有方法onStart、onFinish、onTestSuccess 和onTestFailure。因此,如果您需要在每次测试后生成报告,只需将您的逻辑放入这些方法中即可。
public class TestListener extends TestListenerAdapter {
@Override
public void onTestFailure(ITestResult iTestResult) {
//your logic for report generation
}
@Override
public void onFinish(ITestContext iTestContext) {
//your logic for report generation
}
@Override
public void onTestSuccess(ITestResult iTestResult) {
//your logic for report generation
}
}
我不知道你应该在什么情况下生成(以及如何)你的报告,但是根据你的需要你可以把你的报告逻辑放在相关的方法中。
【讨论】:
-
-
@user3782636 编辑了我的答案。 here 是关于听众的文档。 here doc 关于TestListenerAdapter
-