jmeter 自定义java请求
AbstractJavaSamplerClient介绍
AbstractJavaSamplerClient是org.apache.jmeter.protocol.java.sampler包下的抽象类。需要引用的jar包在jmeter插件包目录(apache-jmeter-5.1.1\lib\ext)下,jar包名称是ApacheJMeter_java.jar。实现了JavaSamplerClient接口,接口中只有runTest()方法没有实现,所以AbstractJavaSamplerClient的子类必须要实现这个方法。
public interface JavaSamplerClient {
void setupTest(JavaSamplerContext var1);
SampleResult runTest(JavaSamplerContext var1);
void teardownTest(JavaSamplerContext var1);
Arguments getDefaultParameters();
}
java请求实现
第一步:引用jmeter jar包(ApacheJMeter_java.jar、ApacheJMeter_core.jar),位置在apache-jmeter-5.1.1\lib\ext目录下
第二步:新建一个java类继承AbstractJavaSamplerClient
示例:
public class DubboRequest extends AbstractJavaSamplerClient
第三步:实现runTest方法
public SampleResult runTest(JavaSamplerContext javaSamplerContext) {
SampleResult sampleResult = new SampleResult();
Long code = javaSamplerContext.getLongParameter("code");
String response = this.getAdd(code);//封装了通过公司的微服务协议获取广告
sampleResult.setSuccessful(true);
sampleResult.setResponseMessageOK();
sampleResult.setResponseData(response,"UTF-8");
return sampleResult;
}
这个方法中调用具体的java请求,getAdd(code)方法是我封装的微服务方法,具体实现我就不展示了,你这边调用你们的微服务接口就行
第四步:实例化SampleResult ,设置请求在jmeter接口响应信息。SampleResult 是提供取样器返回值设置方法的类
常用方法:
sampleResult.setSuccessful(true);//设置SampleResult对象的成功状态
sampleResult.setResponseMessageOK();//设置响应代码ok,例如http 的200状态码
sampleResult.setResponseData(response,"UTF-8");//设置返回结果和编码方式
第五步:设置jmeter GUI界面上参数值
getDefaultParameters方法返回对象Arguments 是jmeter GUI界面上参数值对象,通过addArgument方法设置界面展示的参数变量,我这边设置了code变量,赋了一个默认值
public Arguments getDefaultParameters(){
Arguments arg = new Arguments();
arg.addArgument("code","100000");
return arg;
}
第六步:runTest方法中通过javaSamplerContext获取参数值
Long code = javaSamplerContext.getLongParameter("code");
生成插件包(打成jar包)
1、maven工程打包带上依赖包,在pom文件中增加如下配置
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<!-- 此处指定main方法入口的class -->
<mainClass>入口类全类名</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>assembly</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
2、生成的jar包拷贝到apache-jmeter-5.1.1\lib\ext目录下
jmeter配置
1、jmeter 线程组上添加取样器中的java请求
2、类名称:选择你重写的java请求类,下方展示需要配置的参数
3、执行测试,查看结果,可以看见编码方式是我设置的UTF-8,Response message :OK, Response code:没有设置 空值,具体的响应接口查看响应数据
4、如果执行过程没有达到预期结果,查看jmeter的bin目录jmeter.log,应该是报错了
最后jmeter更多内容查看jmeter文档,目录如下
D:\opensource\apache-jmeter-5.1.1\docs\api