由于很多新型的请求协议,Jmeter并不能够都支持,所以Jmeter中的很多Sampler插件需要我们自己进行二次开发。
第一步,把需要的jar包,先添加到maven依赖中(jar包下载地址:https://pan.baidu.com/s/1ge5aUAn)
<?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>MyJmeter</groupId>
<artifactId>MyJmeter</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<jmeter.version>3.0</jmeter.version>
</properties>
<dependencies>
<!--jmeter-->
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_core</artifactId>
<version>${jmeter.version}</version>
</dependency>
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_java</artifactId>
<version>${jmeter.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<!--<plugin>-->
<!--<groupId>org.apache.maven.plugins</groupId>-->
<!--<artifactId>maven-jar-plugin</artifactId>-->
<!--<version>2.4</version>-->
<!--<configuration>-->
<!--<archive>-->
<!--<manifest>-->
<!--<addClasspath>true</addClasspath>-->
<!--<classpathPrefix>lib/</classpathPrefix>-->
<!--<mainClass>etms.TestEtms</mainClass>-->
<!--</manifest>-->
<!--</archive>-->
<!--</configuration>-->
<!--</plugin>-->
<!--<plugin>-->
<!--<groupId>org.apache.maven.plugins</groupId>-->
<!--<artifactId>maven-dependency-plugin</artifactId>-->
<!--<executions>-->
<!--<execution>-->
<!--<phase>package</phase>-->
<!--<goals>-->
<!--<goal>copy-dependencies</goal>-->
<!--</goals>-->
<!--<configuration>-->
<!--<outputDirectory>-->
<!--${project.build.directory}/lib-->
<!--</outputDirectory>-->
<!--</configuration>-->
<!--</execution>-->
<!--</executions>-->
<!--</plugin>-->
</plugins>
</build>
</project>
然后编写代码如下:
package com.niu.MyJmeter;
import javafx.scene.shape.ArcTo;
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.xmlbeans.impl.xb.xsdschema.impl.PublicImpl;
/**
* Created by Administrator on 2017/8/30 0030.
*/
public class JmeterTest implements JavaSamplerClient {
private String interfaceName;
private String methodName;
@Override
public void setupTest(JavaSamplerContext javaSamplerContext) {
//某种连接只连接一次,例如数据库
System.out.print("测试开始");
}
@Override
public SampleResult runTest(JavaSamplerContext javaSamplerContext) { //由实参arg0传入
SampleResult result = new SampleResult(); //实例化来自ApacheJmeter_core.jar包中的SampleResult类
interfaceName = javaSamplerContext.getParameter("interfaceName"); //获取Jmeter页面上interfaceName的方法
methodName = javaSamplerContext.getParameter("methodName"); //获取Jmeter页面上methodName的方法
result.sampleStart(); //测试开始的时间戳
result.setResponseData(interfaceName+":"+methodName,"UTF-8"); //设置响应数据的格式
result.sampleEnd(); //测试结束的时间戳
result.setSuccessful(true); //设置成功的
result.setResponseCodeOK(); //设置响应code码
result.setDataEncoding("UTF-8"); //设置数据编码格式
return result;
}
@Override
public void teardownTest(JavaSamplerContext javaSamplerContext) {
System.out.print("测试结束");
}
@Override
public Arguments getDefaultParameters() {
//添加参数
Arguments arguments = new Arguments();
arguments.addArgument("interfaceName",""); //显示在Jmter页面上的interfaceName和methodName
arguments.addArgument("methodName","");
return arguments;
}
public static void main(String[] args){
JmeterTest jmeterTest = new JmeterTest(); //实例化这个从JavaSamplerClient类实现过来的JmeterTest类
JavaSamplerContext arg0 = new JavaSamplerContext(jmeterTest.getDefaultParameters()); //实例化来自ApacheJmeter_java.jar包的JavaSamplerContext类,并且实例化了JavaSamplerContext带参数的构造方法,参数是Arguments args,获取的参数是包括key和value的
jmeterTest.runTest(arg0); //将key和value键值对的参数带入到runTest(arg0)进行执行
jmeterTest.teardownTest(arg0); //测试结束
}
}
然后用IDEA中的clean 先清除包,再install打成jar包,放到jmeter中的javasample中,本次代码中的参数是interfaceName, methodName ,然后面填入值,就可以用查看结果树来查看响应结果。
摘自:https://blog.csdn.net/qq_30353203/article/details/77713754