如果不使用TestNGListener在@BeforeMethod或@BeforeClass中抛出异常,如何捕获异常

时间:2016-08-03 12:06:39

标签: java selenium testng

我有一个测试类,每个测试类都有一个特定的功能,并且有一些测试类被认为是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

中引发的异常

2 个答案:

答案 0 :(得分:1)

您可以使用具有适当方法的侦听器:IConfigurationListener#onConfigurationFailure(ITestResult)

检查the documentation以获取有关侦听器的更多详细信息。

答案 1 :(得分:0)

如果通过听众访问它不是你想要做的事情,那么为什么不这样访问它们呢?

来自通过ITestResult注释方法的@AfterMethod对象:

  • 首先通过result.getTestContext().getFailedConfigurations().getAllMethods()

  • 获取所有失败的配置方法
  • 然后,您通过调用ITestNGMethod

  • 来迭代上述@BeforeClass集合,仅过滤掉org.testng.ITestNGMethod#isBeforeClassConfiguration次失败