Jmeter二次开发Demo
前言
在上一集,我们已经完成了JMX脚本的分析,大致了解了JMX脚本的基本元素。
那么在这一集,我们将会介绍一下Jmeter二次开发的Demo。
Demo代码
那么话不多说,我们就直接上代码。
public class TestStress {
@Test
public void testJmeterScript()throws Exception{
// JMeter路径
String jmeterPath = "G:\\Jmeter\\apache-jmeter-5.6.3";
// JMeter根目录
File jmeterHome = new File(jmeterPath);
// JMX文件路径
String jmxFilePath = "E:\\XXX\\JMX\\pay_json.jmx";
// JMX文件
File jmxFile = new File(jmxFilePath);
// JMeter配置文件路径
File jmeterProperties = new File(jmeterHome.getPath() + File.separator + "bin" + File.separator + "jmeter.properties");
// 设置JMeter根目录
JMeterUtils.setJMeterHome(jmeterHome.getPath());
// 加载JMeter配置文件
JMeterUtils.loadJMeterProperties(jmeterProperties.getPath());
// JMeter标准引擎
StandardJMeterEngine jmeter = new StandardJMeterEngine();
// 测试计划树
HashTree testPlanTree = new HashTree();
// 设置文件服务器的基础脚本路径
FileServer.getFileServer().setBaseForScript(jmxFile);
// 加载测试计划树 jmx脚本
testPlanTree = SaveService.loadTree(jmxFile);
// 转换测试计划树
JMeter.convertSubTree(testPlanTree, false);
// Summariser对象
Summariser summer = null;
// Summariser名称
String summariserName = JMeterUtils.getPropDefault("summariser.name", "summary");
if (!summariserName.isEmpty()) {
// 创建Summariser对象
summer = new Summariser(summariserName);
}
// 结果日志文件名
String logFile = "example.csv";
// 结果收集器
ResultCollector logger = new ResultCollector (summer);
logger.setFilename(logFile);
// 将结果收集器添加到测试计划树上
testPlanTree.add(testPlanTree.getArray()[0], logger);
// 配置JMeter引擎
jmeter.configure(testPlanTree);
// 运行JMeter测试
jmeter.run();
}
}
上面的代码,有几个小点是需要各位修改一下的,一个是Jmeter的路径,另一个是用于使用到这个Demo的JMX脚本的路径。不过要注意一下路径的分隔符要结合自身的系统来使用,比如说我的操作系统是Windows的,所以分隔符是'\\'。
代码解释
-
初始化JMeter环境:设置JMeter的安装路径和配置文件路径,并加载配置。
-
加载测试计划:指定JMX文件路径,将测试计划加载到JMeter的测试计划树中。
-
配置结果收集器:创建结果收集器对象,设置结果输出文件名,并将其添加到测试计划树中。
-
运行测试:配置JMeter引擎,使用测试计划树运行测试。
具体来说:
- 首先,代码设置了JMeter的根目录和JMX文件的路径。
- 然后,它加载了JMeter的配置文件,并初始化了JMeter引擎和测试计划树。
- 接下来,代码设置了文件服务器的基础脚本路径,并加载了JMX文件到测试计划树中。
- 之后,代码检查了是否需要创建Summariser对象(用于生成测试摘要)。
- 接着,代码创建了一个结果收集器,设置了输出日志的文件名,并将结果收集器添加到了测试计划树中。
- 最后,代码配置了JMeter引擎,并执行了测试。