2016-08-03 14 views
0

我有一个测试类中的每个特定的功能,并具有其中驱动程序的初始化和测试开球恰巧被视为BaseClass的测试类层(我避免在这里使用Listener)。定义的AfterMethod在BaseClass的其中注销并还捕获与异常和堆栈跟踪并记录到数据库中的结果,如果测试失败,我能捕捉到异常,如果BeforeMethod或BeforeClass失败的异常没有被捕获,所有的我请参阅显示为SKIPPED的测试状态。下面是一段代码,我在AfterMethod使用:如何捕捉异常,如果抛出@BeforeMethod或@BeforeClass不使用TestNGListener

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 
} 

如何赶上抛出的异常BeforeMethodBeforeClass

回答

0

如果通过监听器访问它是不是你想要做的事,那么为什么不喜欢这个访问它们?

ITestResult对象,通过你的@AfterMethod标注的方法获得:通过result.getTestContext().getFailedConfigurations().getAllMethods()

  • 的所有失败的配置方法

    • 首先弄个然后你通过ITestNGMethod上述收集循环过滤只通过@BeforeClass失败致电org.testng.ITestNGMethod#isBeforeClassConfiguration