我有一个测试类,每个测试类都有一个特定的功能,并且有一些测试类被认为是BaseClass,其中发生了驱动程序初始化和测试启动(我在这里避免使用Listener)。在BaseClass中定义了一个AfterMethod,它注销并使用例外和堆栈跟踪以及日志捕获结果到数据库,如果测试失败,我能够捕获异常,如果BeforeMethod或BeforeClass失败,则不会捕获异常,所有我看是测试状态,显示为SKIPPED。这是我在AfterMethod中使用的一段代码:
int
如何捕获public void afterMethodBase(ITestResult result) {
logger.debug("TestName : " + result.getTestName());
logger.info("Method Name : " + result.getMethod().getMethodName());
ResultLogger.processResult(result);
Throwable exception = itr.getThrowable(); // this is null when status is skipped
}
或BeforeMethod
答案 0 :(得分:1)
您可以使用具有适当方法的侦听器:IConfigurationListener#onConfigurationFailure(ITestResult)
检查the documentation以获取有关侦听器的更多详细信息。
答案 1 :(得分:0)
如果通过听众访问它不是你想要做的事情,那么为什么不这样访问它们呢?
来自通过ITestResult
注释方法的@AfterMethod
对象:
首先通过result.getTestContext().getFailedConfigurations().getAllMethods()
然后,您通过调用ITestNGMethod
@BeforeClass
集合,仅过滤掉org.testng.ITestNGMethod#isBeforeClassConfiguration
次失败