如何使用JMeter API从JAVA Class获取Jmeter测试结果

use*_*767 1 java web-services jmx jmeter

我是JMeter的新手.我找到了以下代码,通过使用JMeter API StandardJMeterEngine从JAVA项目运行JMeter测试计划(.jmx).

但是如何将执行结果作为返回?

我看过很多关于SampleResult的文章.如果这是一个解决方案,请您提供有关如何将我的sampleResult集成到现有JMeter测试计划中的详细信息.

    // JMeter Engine
    StandardJMeterEngine jmeter = new StandardJMeterEngine();

    // Initialize Properties, logging, locale, etc.
    JMeterUtils.loadJMeterProperties("../jmeter.properties");
    JMeterUtils.setJMeterHome("../apache-jmeter-2.11");
    JMeterUtils.initLogging();
    JMeterUtils.initLocale();

    SaveService.loadProperties();

    // Load existing .jmx Test Plan
    FileInputStream in = new FileInputStream("../Integ.jmx");
    HashTree testPlanTree = SaveService.loadTree(in);
    in.close();
    // Run JMeter Test
    jmeter.configure(testPlanTree);
    jmeter.run();

    <how to capture result here?????????????????>
    jmeter.exit();
Run Code Online (Sandbox Code Playgroud)

Fra*_*ulz 8

如果要直接在Java中访问测试结果而不通过文件输出进行解决方法,则可以重新定义结果收集器并获取每个示例事件的通知:

public class MyResultCollector extends ResultCollector {

    public MyResultCollector(Summariser summer) {
        super(summer);
    }

    @Override
    public void sampleOccurred(SampleEvent e) {
        super.sampleOccurred(e);
        SampleResult r = e.getResult();
        if (r.isSuccessful()) {
            System.out.println("Response time in milliseconds: " + r.getTime());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Dmi*_*i T 6

jmeter.run()节之前添加以下几行:

Summariser summer = null;
String summariserName = JMeterUtils.getPropDefault("summariser.name", "summary");//$NON-NLS-1$
if (summariserName.length() > 0) {
    summer = new Summariser(summariserName);
}

String logFile = "/path/to/output/file.jtl";
ResultCollector logger = new ResultCollector(summer);
logger.setFilename(logFile);
testPlanTree.add(testPlanTree.getArray()[0], logger);
Run Code Online (Sandbox Code Playgroud)

结果将被/path/to/output/file.jtl归档。可以在测试执行后通过您在 JMeter GUI 中选择的侦听器打开。

您可以控制通过user.properties文件存储哪些值。根据JMeter Performance and Tuning Tips指南,推荐值是:

jmeter.save.saveservice.output_format=csv
jmeter.save.saveservice.data_type=false
jmeter.save.saveservice.label=true
jmeter.save.saveservice.response_code=true
jmeter.save.saveservice.response_data.on_error=false
jmeter.save.saveservice.response_message=false
jmeter.save.saveservice.successful=true
jmeter.save.saveservice.thread_name=true
jmeter.save.saveservice.time=true
jmeter.save.saveservice.subresults=false
jmeter.save.saveservice.assertions=false
jmeter.save.saveservice.latency=true
jmeter.save.saveservice.bytes=true
jmeter.save.saveservice.hostname=true
jmeter.save.saveservice.thread_counts=true
jmeter.save.saveservice.sample_count=true
jmeter.save.saveservice.response_message=false
jmeter.save.saveservice.assertion_results_failure_message=false
jmeter.save.saveservice.timestamp_format=HH:mm:ss
jmeter.save.saveservice.default_delimiter=;
jmeter.save.saveservice.print_field_names=true 
Run Code Online (Sandbox Code Playgroud)