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

无需加载JMeter表格,通过Java代码生成监听器执行报告CSV文件

直接用Java代码生成JMeter监听器CSV报告

要实现不通过JMeter GUI加载结果到表格,直接生成摘要、聚合、综合监听器的CSV报告,可以借助JMeter的核心API复用监听器底层逻辑,处理结果文件并输出CSV。

步骤1:引入JMeter依赖

如果用Maven,在pom.xml中添加以下依赖(版本建议和你使用的JMeter版本保持一致):

<dependencies>
    <dependency>
        <groupId>org.apache.jmeter</groupId>
        <artifactId>ApacheJMeter_core</artifactId>
        <version>5.6.3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.jmeter</groupId>
        <artifactId>ApacheJMeter_components</artifactId>
        <version>5.6.3</version>
    </dependency>
</dependencies>

步骤2:编写核心代码

以下代码读取指定JMeter结果文件(.jtl),分别生成三种监听器的CSV报告:

import org.apache.jmeter.reporters.AggregateReport;
import org.apache.jmeter.reporters.SummaryReport;
import org.apache.jmeter.reporters.SynthesisReport;
import org.apache.jmeter.samplers.SampleEvent;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.save.SaveService;
import org.apache.jmeter.util.JMeterUtils;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.nio.charset.StandardCharsets;
import java.util.Collection;

public class JMeterReportGenerator {

    public static void main(String[] args) throws Exception {
        // 初始化JMeter环境
        JMeterUtils.loadJMeterProperties("jmeter.properties"); // 替换为你的jmeter.properties路径,可从JMeter安装目录获取
        JMeterUtils.setJMeterHome("path/to/your/jmeter/home"); // 替换为JMeter安装根目录
        JMeterUtils.initLocale();

        // 加载JMeter结果文件
        File resultFile = new File("path/to/your/testresults.jtl");
        Collection<SampleResult> sampleResults = SaveService.loadSampleResults(resultFile);

        // 生成各类报告
        generateSummaryReport(sampleResults, "summary_report.csv");
        generateAggregateReport(sampleResults, "aggregate_report.csv");
        generateSynthesisReport(sampleResults, "synthesis_report.csv");
    }

    private static void generateSummaryReport(Collection<SampleResult> sampleResults, String outputPath) throws IOException {
        SummaryReport summaryReport = new SummaryReport();
        summaryReport.setDelimiter(",");

        for (SampleResult result : sampleResults) {
            summaryReport.sampleOccurred(new SampleEvent(result, ""));
        }

        try (OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(outputPath), StandardCharsets.UTF_8)) {
            summaryReport.printResults(writer);
        }
        System.out.println("摘要报告已生成:" + outputPath);
    }

    private static void generateAggregateReport(Collection<SampleResult> sampleResults, String outputPath) throws IOException {
        AggregateReport aggregateReport = new AggregateReport();
        aggregateReport.setDelimiter(",");

        for (SampleResult result : sampleResults) {
            aggregateReport.sampleOccurred(new SampleEvent(result, ""));
        }

        try (OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(outputPath), StandardCharsets.UTF_8)) {
            aggregateReport.printResults(writer);
        }
        System.out.println("聚合报告已生成:" + outputPath);
    }

    private static void generateSynthesisReport(Collection<SampleResult> sampleResults, String outputPath) throws IOException {
        SynthesisReport synthesisReport = new SynthesisReport();
        synthesisReport.setDelimiter(",");

        for (SampleResult result : sampleResults) {
            synthesisReport.sampleOccurred(new SampleEvent(result, ""));
        }

        try (OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(outputPath), StandardCharsets.UTF_8)) {
            synthesisReport.printResults(writer);
        }
        System.out.println("综合报告已生成:" + outputPath);
    }
}

注意事项

  • 确保jmeter.properties路径和JMeter Home路径配置正确,否则会初始化失败。
  • 结果文件(.jtl)需为JMeter标准格式,支持CSV或XML类型的.jtl文件。
  • 若要调整CSV输出格式(如分隔符、字段顺序),可修改监听器对应属性,比如调整setDelimiter()参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 03:18:42