![](/img/trans.png)
[英]When do you declare a WebDriver driver public or private when using @BeforeMethod and @BeforeClass annotations
[英]How do I catch exceptions if thrown in @BeforeMethod or @BeforeClass without using a TestNGListener
我有一个针对特定功能的测试类,并具有被视为BaseClass的测试类层,其中发生了驱动程序初始化和测试启动(我在这里避免使用Listener)。 在BaseClass中定义了一个AfterMethod,该方法可以注销并捕获带有异常和stacktrace的结果,并记录到数据库中,如果测试失败,我可以捕获异常,如果BeforeMethod或BeforeClass失败,则不捕获异常,所有看到的是测试状态,显示为“跳过”。 这是我在AfterMethod中使用的代码:
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
或BeforeClass
引发的异常
您可以使用侦听器及其适当的方法: IConfigurationListener#onConfigurationFailure(ITestResult)
查看文档以获取有关侦听器的更多详细信息。
如果您不想通过侦听器访问它,那么为什么不这样访问它们呢?
从通过您的@AfterMethod
注释方法的ITestResult
对象中:
首先通过result.getTestContext().getFailedConfigurations().getAllMethods()
掌握所有失败的配置方法
然后,通过调用org.testng.ITestNGMethod#isBeforeClassConfiguration
遍历上述ITestNGMethod
集合,以仅过滤出@BeforeClass
故障。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.