You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RestAssured框架中Extent Reports未在指定目录生成的问题求助

解决Extent Reports未生成问题

核心问题排查与修复

1. 监听器方法名错误(致命问题)

你的ExtentReportManager类中,OnFinish方法名首字母大写,不符合TestNG监听器ITestListener的规范(正确方法名是**onFinish**,小写o)。这导致测试结束时extent.flush()根本没执行,报告无法写入文件。

修复代码:

// 修正方法名,确保重写TestNG监听器方法
@Override
public void onFinish(ITestContext testContext) {
    extent.flush();
}

2. 报告路径错误

原代码中sparkReporter的路径写法错误,既没有正确获取项目根目录,也没有指定report子目录:

// 错误写法:未获取系统属性,缺少目录分隔符
sparkReporter=new ExtentSparkReporter("user.dir"+repName);

正确写法需要通过System.getProperty("user.dir")获取项目根目录,同时指定report子目录,还要确保目录存在:

修复代码:

public void onStart(ITestContext testContext) {
    String timeStamp=new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Date()); 
    repName ="Test-Report-"+timeStamp+".html";
    
    // 拼接完整报告路径
    String reportDirPath = System.getProperty("user.dir") + "/report";
    String reportPath = reportDirPath + "/" + repName;
    
    // 创建report目录(如果不存在)
    File reportDir = new File(reportDirPath);
    if (!reportDir.exists()) {
        reportDir.mkdirs();
    }
    
    sparkReporter=new ExtentSparkReporter(reportPath); 
    
    // 其余配置保持不变
    sparkReporter.config().setDocumentTitle("RestAssuredAtomationProject");
    sparkReporter.config().setReportName("Pet Store Users API");
    sparkReporter.config().setTheme(Theme.DARK);
    
    extent=new ExtentReports();
    extent.attachReporter(sparkReporter);
    extent.setSystemInfo("Application","Pet Store Users API");
    extent.setSystemInfo("Operting System",System.getProperty("os.name"));
    extent.setSystemInfo("User Name",System.getProperty("user.name"));
    extent.setSystemInfo("Environment","QA");
    extent.setSystemInfo("User","Kiran");
}

注意:需要导入java.io.File包。

3. 测试节点重复创建问题

原代码中onTestSuccess、onTestFailure等方法里,extent.createTest已经创建了测试节点,再调用test.createNode(result.getName())会导致重复节点,建议删除该行:

修复示例(以onTestSuccess为例):

public void onTestSuccess(ITestResult result) {
    test=extent.createTest(result.getName());
    test.assignCategory(result.getMethod().getGroups());
    // 移除重复创建节点的代码
    // test.createNode(result.getName());
    test.log(Status.PASS,"Test Passed");
}

额外验证步骤

  • 确认Eclipse项目的report目录有写入权限,右键项目→属性→资源→检查读写权限。
  • 运行testng.xml后,查看项目根目录下的report文件夹,按F5刷新即可看到生成的HTML报告。

内容的提问来源于stack exchange,提问作者Kiri msr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 09:05:11