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

TestNG Java项目中如何将XML报告转换为JSON报告

TestNG XML报告转JSON可行实现方案

方案1:Java代码手动解析XML后转JSON

直接解析TestNG默认生成的test-output/testng-results.xml核心报告文件,转换为JSON格式,适合临时转换历史报告的场景:

  • 首先引入XML解析和JSON序列化依赖,Maven配置示例如下:
<!-- dom4j 解析XML文件 -->
<dependency>
    <groupId>org.dom4j</groupId>
    <artifactId>dom4j</artifactId>
    <version>2.1.4</version>
</dependency>
<!-- Jackson 序列化生成JSON -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.2</version>
</dependency>
  • 解析XML中需要的字段:比如测试套件信息、用例名称、执行状态、耗时、失败异常堆栈、用例分组等,过滤不需要的冗余字段
  • 将解析得到的结构化数据封装为Java对象,调用ObjectMapper.writeValue(new File("test-output/testng-report.json"), 封装后的对象)即可输出JSON报告
    如果需要固定转换规则可以把这段逻辑封装为工具类,每次跑完测试一键执行转换

方案2:自定义TestNG IReporter监听器直接生成JSON报告

不用事后转换,测试执行完成后自动生成JSON报告,自由度最高,适合需要自定义JSON字段的场景:

  • 实现TestNG的IReporter接口,重写generateReport方法,方法内可以直接获取全量测试运行数据,不需要解析XML,简单示例如下:
public class CustomJsonReportListener implements IReporter {
    @Override
    public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites, String outputDirectory) {
        Map<String, Object> reportContent = new HashMap<>();
        // 遍历suites对象填充测试套件、用例、执行结果、Selenium截图路径等自定义数据
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            // 格式化输出JSON到test-output目录
            objectMapper.writerWithDefaultPrettyPrinter()
                .writeValue(new File(outputDirectory + "/testng-report.json"), reportContent);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
  • 在testng.xml中配置自定义监听器,后续每次执行测试都会自动生成JSON格式报告

方案3:使用现成TestNG JSON报告插件

如果不需要自定义格式,不想写代码,可以直接引入官方或第三方的TestNG JSON报告插件,配置完成后自动生成标准结构的JSON报告。

推荐优先选择方案2,既不需要额外做XML解析,又能灵活调整JSON结构,适配Selenium测试中添加截图、操作步骤等额外信息的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 22:06:08