Extent Reports v5如何合并测试报告?遇JsonFormatter报错求解决
Extent Reports v5 追加测试结果报错问题解决
问题原因
JsonFormatter在Extent Reports v5中已被废弃,它属于v3及更早版本的API,v5内部不再兼容该类的初始化逻辑,强行实例化会触发反射访问权限限制,也就是你遇到的java.lang.reflect.InaccessibleObjectException。
另外v5实现测试结果追加的逻辑和v3完全不同,不需要依赖JsonFormatter来归档、恢复测试域。
正确的追加测试结果实现方案
v5中实现结果追加,只需通过ExtentSparkReporter的配置开启追加模式,结合ExtentReports的状态恢复即可,完全不需要用到JsonFormatter。具体步骤如下:
- 配置Spark Reporter开启追加模式
- 从已有归档文件加载历史测试数据(可选,首次运行可跳过)
- 正常创建测试用例并执行
完整代码示例
// 初始化Spark Reporter ExtentSparkReporter spark = new ExtentSparkReporter(System.getProperty("user.dir") + "/reporti/TestExtentReport.html"); // 开启追加模式 spark.config().setAppendExisting(true); // 初始化ExtentReports实例 ExtentReports extent = new ExtentReports(); // 从自动生成的归档文件恢复历史数据(v5默认归档文件为项目根目录下的extent-test.json) extent.createDomainFromJsonArchive("extent-test.json"); // 关联Reporter extent.attachReporter(spark); // 创建测试用例 ExtentTest logger = extent.createTest("Sklepanje"); // 执行测试逻辑... // 必须调用flush确保结果写入报告 extent.flush();
关键注意事项
- 彻底删除所有
JsonFormatter相关代码,v5已不再支持该类 - 首次运行时,
extent-test.json还未生成,可暂时注释createDomainFromJsonArchive代码,后续运行再添加即可 - 测试结束后必须调用
extent.flush(),否则测试结果不会写入报告
内容的提问来源于stack exchange,提问作者shokerrr
相关产品推荐
相关产品推荐

