首页 > 解决方案 > Testng 无法记录测试失败

问题描述

我已经使用 testng 来运行测试用例。ITestResult 监听器用于捕获测试状态,在 after 方法中给出。请帮助为什么testng没有记录测试失败?

标签: selenium-webdriverframeworkstestnglistenertestng.xml

解决方案


如果您想截取失败测试的屏幕截图,以下代码可能会对您有所帮助。

  1. 您必须在 xml 测试套件中配置侦听器

    <listeners>
        <listener class-name="package.your.listener.ScreenshotListener" />
    </listeners>
    
  2. 实现你的监听器

    公共类 ScreenshotListener 扩展 TestListenerAdapter {

    @Override
    public void onTestFailure(ITestResult result) {
        super.onTestFailure(result);
    
        if (!result.isSuccess()) {
    
            WebDriver driver = getDriverByResult(result);
            String methodName = result.getName();
    
            try {
    
                File scrFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
                String reportDirectory = new File(System.getProperty("user.dir")).getAbsolutePath() + "/target/surefire-reports";
                File destFile = new File(reportDirectory + "/failure_screenshots/"
                        + buildFileNameByMethod(methodName)+ ".png");
    
                FileUtils.copyFile(scrFile, destFile);
                Reporter.log("<a href='" + destFile.getAbsolutePath() + "'> <img src='" + destFile.getAbsolutePath() + "' height='100' width='100'/> </a>");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    

推荐阅读