繁体   English   中英

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

[英]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
}

如何捕获BeforeMethodBeforeClass引发的异常

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

查看文档以获取有关侦听器的更多详细信息。

如果您不想通过侦听器访问它,那么为什么不这样访问它们呢?

从通过您的@AfterMethod注释方法的ITestResult对象中:

  • 首先通过result.getTestContext().getFailedConfigurations().getAllMethods()掌握所有失败的配置方法

  • 然后,通过调用org.testng.ITestNGMethod#isBeforeClassConfiguration遍历上述ITestNGMethod集合,以仅过滤出@BeforeClass故障。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM