Jmeter GUI中的HTTP请求Json正文:
{"UniqID" : ${__time()}}
我的Java代码:
JMeterUtils.loadJMeterProperties("../bin/jmeter.properties");
JMeterUtils.setJMeterHome("../jMeter");
JMeterUtils.initLocale();
SaveService.loadProperties();
File jmxFile = new File(".../test.jmx");
HashTree testPlanTree = SaveService.loadTree(jmxFile);
StandardJMeterEngine jMeterEngine = new StandardJMeterEngine();
jMeterEngine.configure(testPlanTree);
jMeterEngine.
jMeterEngine.run();
jMeterEngine.exit();
更新:
我从gradle本地文件夹中复制了ApacheJMeter_functions.jar。。\Users\.gradle\caches\modules-2\files-2.1\org.apache.jmeter\ApachJMeter_functions\to/jMeter/lib/ext,这是我上面代码中设置的jMeter主路径中的一个子目录,它起作用了。
但现在的问题是,我如何只通过gradle依赖性而不是通过将实际的jar添加到jMeter主页来实现这一点,因为我无法将jar文件上传到git。
我在jmeter.properties文件中发现了一个路径变量search_path,需要将其设置为jmeter_function jar的路径,但随后又出现了一个新问题,即如何获得gradle依赖项下载的路径,因为java.class.path只给了我一个瘦jar路径。因此,在花了很多天的时间寻找解决方案后,终于能够创建以下解决方案:
task myTest(type: JavaExec) {
...someCode...
doFirst {
args = [sourceSets.test.runtimeClasspath.filter {File f ->
f.name.matches("(.*)ApacheJMeter_functions(.*)")}.asPath]
}
}
然后我在java代码中使用了上面的参数值,将seach_path设置为以下
JMeterUtils.loadJMeterProperties("../bin/jmeter.properties");
JMeterUtils.setJMeterHome("../jMeter");
String jMeterClassPath = args[0];
JMeterUtils.setProperty("search_paths",jMeterClassPath);
JMeterUtils.initLocale();
SaveService.loadProperties();
File jmxFile = new File(".../test.jmx");
HashTree testPlanTree = SaveService.loadTree(jmxFile);
StandardJMeterEngine jMeterEngine = new StandardJMeterEngine();
jMeterEngine.configure(testPlanTree);
jMeterEngine.
jMeterEngine.run();
jMeterEngine.exit();