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
相关产品推荐
相关产品推荐

