【问题标题】:How to generate Jmeter dashboard report through java coding. ( not windows or shell command)如何通过 java 编码生成 Jmeter 仪表板报告。 (不是 windows 或 shell 命令)
【发布时间】:2019-01-28 20:06:52
【问题描述】:

我必须通过 java 编码生成 Jmeter 仪表板报告。在java代码下面,我曾经生成一个普通的jmeter报告。我必须生成一个 通过 java 的仪表板报告。

  public class JMeterFromExistingJMX {

    public static void main(String[] argv) throws Exception {
        // JMeter Engine
        StandardJMeterEngine jmeter = new StandardJMeterEngine();
        // Initialize Properties, logging, locale, etc.
        // JMeterUtils.loadJMeterProperties
        ("/path/to/your/jmeter/bin/jmeter.properties");
        JMeterUtils.setJMeterHome("/path/to/your/jmeter");
        JMeterUtils.initLogging();// log
        JMeterUtils.initLocale();
        // Initialize JMeter SaveService
        SaveService.loadProperties();
        // Load existing .jmx Test Plan
        FileInputStream in = new 
         FileInputStream
       ("/path/to/your/jmeter/extras/Test.jmx");
        HashTree testPlanTree = SaveService.loadTree(in);
        in.close();

        // Run JMeter Test
        jmeter.configure(testPlanTree);
        jmeter.run();
    }
    }

    }

【问题讨论】:

  • 我想你忘了贴上面提到的java代码吧?
  • 对不起,我已经添加了

标签: java jmeter


【解决方案1】:
  1. 首先,您需要在生成报告仪表板之前生成一个 .jtl 结果文件,因此请确保将以下代码块添加到您的函数中:

    Summariser summer = null;
    String summariserName = JMeterUtils.getPropDefault("summariser.name", "summary");
    if (summariserName.length() > 0) {
        summer = new Summariser(summariserName);
    }
    String logFile = "/path/to/result.jtl";
    ResultCollector logger = new ResultCollector(summer);
    logger.setFilename(logFile);
    
    testPlanTree.add(testPlanTree.getArray()[0], logger);
    
  2. 然后您需要设置 HTML Reporting Dashboard 目的地:

    JMeterUtils.setProperty(JMETER_REPORT_OUTPUT_DIR_PROPERTY, "/where/you/want/the/dashboard/to/be/generated");
    
  3. 最后你可以调用ReportGenerator类:

    ReportGenerator generator = new ReportGenerator(logFile,null);
    generator.generate();
    

完整代码以防万一:

import org.apache.jmeter.engine.StandardJMeterEngine;
import org.apache.jmeter.report.dashboard.ReportGenerator;
import org.apache.jmeter.reporters.ResultCollector;
import org.apache.jmeter.reporters.Summariser;
import org.apache.jmeter.save.SaveService;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jorphan.collections.HashTree;

import java.io.File;

import static org.apache.jmeter.JMeter.JMETER_REPORT_OUTPUT_DIR_PROPERTY;

public class RunJMeterTest {

    public static void main(String[] args) throws Exception {
        StandardJMeterEngine jmeter = new StandardJMeterEngine();
        JMeterUtils.loadJMeterProperties("/path/to/your/jmeter/bin/jmeter.properties");
        JMeterUtils.setJMeterHome("/path/to/your/jmeter");
        JMeterUtils.initLocale();
        SaveService.loadProperties();
        HashTree testPlanTree = SaveService.loadTree(new File("/path/to/your/jmeter/bin/test.jmx"));
        Summariser summer = null;
        String summariserName = JMeterUtils.getPropDefault("summariser.name", "summary");
        if (summariserName.length() > 0) {
            summer = new Summariser(summariserName);
        }
        String logFile = "/path/to/your/jmeter/bin/result.jtl";
        ResultCollector logger = new ResultCollector(summer);
        logger.setFilename(logFile);
        testPlanTree.add(testPlanTree.getArray()[0], logger);
        jmeter.configure(testPlanTree);
        jmeter.run();
        JMeterUtils.setProperty(JMETER_REPORT_OUTPUT_DIR_PROPERTY, "/path/to/dashboard");
        ReportGenerator generator = new ReportGenerator(logFile, null);
        generator.generate();
    }
}

参考资料:

【讨论】:

  • 非常感谢。您能否分享上述代码的依赖项和导入。我用的是 ApacheJMeter_core 版本 4。无法导入所有的支持类
  • 更新了代码以表示完整的类。关于依赖关系 - 这取决于您使用什么组件,如有疑问,请插入 mvnrepository.com/artifact/org.apache.jmeter 中的所有内容
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-11
  • 1970-01-01
  • 2016-11-11
  • 1970-01-01
  • 2016-12-04
  • 2018-01-29
相关资源
最近更新 更多