我正在尝试使用 Java 代码执行 JMeter 脚本
String jmeterHome = "D:/tmp/apache-jmeter-3.3";
StandardJMeterEngine jmeter = new StandardJMeterEngine();
JMeterUtils.loadJMeterProperties(jmeterHome + "/jmeter.properties");
JMeterUtils.setJMeterHome(jmeterHome);
JMeterUtils.initLocale();
SaveService.loadProperties();
File script = new File(jmeterHome + "/http_localhost.jmx");
HashTree testPlanTree = SaveService.loadTree(script);
Summariser summer = null;
String summariserName = JMeterUtils.getPropDefault("summariser.name", "summary");
if (summariserName.length() > 0) {
summer = new Summariser(summariserName);
}
String logFile = jmeterHome + "/file.jtl";
ResultCollector logger = new ResultCollector(summer);
logger.setFilename(logFile);
testPlanTree.add(testPlanTree.getArray()[0], logger);
jmeter.configure(testPlanTree);
jmeter.run();
在 JMeter GUI 的“线程组”配置中,我将“线程数”设置为“${__P(xxx,20)}”。它在 GUI 上运行良好 - 我可以使用默认值“20”执行脚本。但上面的代码并没有启动任何线程。 Java 代码打印出它正在尝试启动零个线程。
我见过Jmeter functions don't executing when calling from java code我的项目中确实有以下依赖项
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_java</artifactId>
<version>3.3</version>
</dependency>
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_http</artifactId>
<version>3.3</version>
</dependency>
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_functions</artifactId>
<version>3.3</version>
</dependency>
最佳答案
您的代码错误,您没有引用正确的 jmeter.properties 路径。
工作示例:
String jmeterHome = "/data/jmeter/jmeters/apache-jmeter-3.3/";
StandardJMeterEngine jmeter = new StandardJMeterEngine();
JMeterUtils.setJMeterHome(jmeterHome);
JMeterUtils.loadJMeterProperties(jmeterHome + "bin/jmeter.properties");
JMeterUtils.initLocale();
SaveService.loadProperties();
File script = new File("/data/jmeter/workspace/JMeterFromJava/scenario/localhost.jmx");
HashTree testPlanTree = SaveService.loadTree(script);
Summariser summer = null;
String summariserName = JMeterUtils.getPropDefault("summariser.name", "summary");
if (summariserName.length() > 0) {
summer = new Summariser(summariserName);
}
String logFile = "/data/jmeter/workspace/JMeterFromJava/results/file.jtl";
ResultCollector logger = new ResultCollector(summer);
logger.setFilename(logFile);
testPlanTree.add(testPlanTree.getArray()[0], logger);
jmeter.configure(testPlanTree);
jmeter.run();
2017 年 9 月 29 日编辑:
您向 bugzilla 提交了一个显示问题的演示项目。它有助于理解您的问题。
状态: - 如果应用程序作为主应用程序运行,则代码可以工作 - 如果 AppTest 从 Eclipse 运行,则代码可以工作 - 但是通过 mvn clean install 运行时代码失败
失败是由于以下代码造成的:
关于java - 从 Java 函数和属性运行 JMeter 脚本时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46429778/