import org.apache.jmeter.JMeter;
import org.apache.jmeter.engine.JMeterEngineException;
import org.apache.jmeter.engine.StandardJMeterEngine;
import org.apache.jmeter.reporters.ResultCollector;
import org.apache.jmeter.reporters.Summariser;
import org.apache.jmeter.save.SaveService;
import org.apache.jmeter.services.FileServer;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jorphan.collections.HashTree;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.Field;
public class Demo1 {
public static void main(String[] args) throws IllegalAccessException, IOException, JMeterEngineException, NoSuchFieldException {
StandardJMeterEngine standardJMeterEngine=new StandardJMeterEngine();
System.setProperty(JMeter.JMETER_NON_GUI, "true");
JMeterUtils.loadJMeterProperties("D:\\apache-jmeter-5.1\\bin\\jmeter.properties");
JMeterUtils.loadJMeterProperties("D:\\apache-jmeter-5.1\\bin\\system.properties");
JMeterUtils.loadJMeterProperties("D:\\apache-jmeter-5.1\\bin\\user.properties");
JMeterUtils.loadJMeterProperties("D:\\apache-jmeter-5.1\\bin\\saveservice.properties");
JMeterUtils.setJMeterHome("D:\\apache-jmeter-5.1");
JMeterUtils.initLocale();
JMeterUtils.initLogging();
SaveService.loadProperties();
File file=new File("G:\\DownLoad\\script\\search.jmx");
FileServer.getFileServer().setBase(file);
FileServer.getFileServer().setScriptName(file.getName());
Field baseField = FileServer.getFileServer().getClass().getDeclaredField("base");
baseField.setAccessible(true);//设置允许访问
baseField.set(FileServer.getFileServer(), file.getAbsoluteFile().getParentFile());
HashTree scripts=SaveService.loadTree(file);
Summariser summariser = new Summariser(JMeterUtils.getPropDefault("summariser.name", "summary"));
ResultCollector logger = new ResultCollector(summariser);
logger.setFilename("G:\\DownLoad\\script\\baidu.jtl");
scripts.add(scripts.getArray()[0],logger);
JMeter.convertSubTree(scripts);
standardJMeterEngine.configure(scripts);
standardJMeterEngine.runTest();
}
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>testjmeter</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>6</source>
<target>6</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_java</artifactId>
<version>5.1.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.jmeter/ApacheJMeter_core -->
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_core</artifactId>
<version>5.1.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.jmeter/ApacheJMeter_http -->
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_http</artifactId>
<version>5.1.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.jmeter/ApacheJMeter_components -->
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_components</artifactId>
<version>5.1.1</version>
</dependency>
</dependencies>
</project>
import org.apache.jmeter.JMeter;
import org.apache.jmeter.engine.JMeterEngineException;
import org.apache.jmeter.engine.StandardJMeterEngine;
import org.apache.jmeter.reporters.ResultCollector;
import org.apache.jmeter.reporters.Summariser;
import org.apache.jmeter.save.SaveService;
import org.apache.jmeter.services.FileServer;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jorphan.collections.HashTree;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.Field;
public class JmeterDemo {
public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException, IOException, JMeterEngineException {
StandardJMeterEngine standardJMeterEngine = new StandardJMeterEngine();
// StandardJMeterEngine standardJMeterEngine=new StandardJMeterEngine("127.0.0.1"); //使用远程的jmeter server来进行性能测试,也就是分布式方式,IP地址可以带端口或不带端口
JMeterUtils.loadJMeterProperties("D:\\apache-jmeter-5.1\\bin\\jmeter.properties");//加载Jmeter.properties属性文件
JMeterUtils.loadJMeterProperties("D:\\apache-jmeter-5.1\\bin\\system.properties");//
JMeterUtils.loadJMeterProperties("D:\\apache-jmeter-5.1\\bin\\user.properties");//
JMeterUtils.setJMeterHome("D:\\apache-jmeter-5.1");//设置jmeter HOME目录
JMeterUtils.initLocale();//加载用户工作目录或CLASSPATH目录下的properties文件,可选代码
SaveService.loadProperties();//加载saveservice要使用的properties文件
File file = new File("G:\\DownLoad\\script\\search.jmx");//得到脚本的文件对象
FileServer.getFileServer().setBaseForScript(file);//设置jmeter脚本执行base目录
FileServer.getFileServer().setScriptName(file.getName());//设置脚本名称
Field baseField = FileServer.getFileServer().getClass().getDeclaredField("base");
baseField.setAccessible(true);//设置允许访问
baseField.set(FileServer.getFileServer(), file.getAbsoluteFile().getParentFile());
HashTree jmxTree = SaveService.loadTree(file);//加载jmx脚本文件
JMeter.convertSubTree(jmxTree, false);//false:删除脚本中禁用的元件、替换脚本中可替换的控制器;true:克隆整个脚本
Summariser summer = new Summariser("summary");//生成概要结果对象
ResultCollector logger = new ResultCollector(summer);//概要结果对象写入ResultCollector
logger.setFilename("G:\\DownLoad\\script\\test.jtl");//设置输出的jtl文件的文件名
jmxTree.add(jmxTree.getArray()[0], logger);//把ResultCollector对象添加到脚本中
standardJMeterEngine.configure(jmxTree);//设置jmeter引擎需要执行的脚本
standardJMeterEngine.runTest(); //使用该方法或run()方法效果相同
// standardJMeterEngine.run();
}
}