本篇内容主要讲解“jmeter怎么编写java请求”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“jmeter怎么编写java请求”吧!
通常情况下,推荐使用jmeter编写Java 请求
有以下优势
脚本易维护
易调试
开发脚本周期短
不过网上扩展java请求文章比较多的还是,通过实现org.apache.jmeter.protocol.java.sampler.JavaSamplerClient接口
或是继承AbstractJavaSamplerClient虚类来实现java请求
大致步骤如下:
1. 建立java工程
2. 加载依赖包到java工程环境变量中,ApacheJMeter_core.jar和ApacheJMeter_java.jar编写时需要,调试需要加载jmeter全部依赖包(jmeter_home/lib下所有,实际上不是所有,包比较多,很难辨别)
3. 编写Java Sampler,继承AbstractJavaSamplerClient,并重写如下方法
[java] view plain copy
public Arguments getDefaultParameters();可选,定义可用参数及默认值;
public void setupTest(JavaSamplerContext arg0):可选,测试前执行,做一些初始化工作;
public SampleResult runTest(JavaSamplerContext arg0);必选,实现自定义请求;
public void teardownTest(JavaSamplerContext arg0):可选,测试结束时调用;
4. 打jar包,将包放到jmeter_home/lib/ext/下
5. 记得把所有额外的(自定义协议依赖的,非jmeter的)依赖包放到jmeter环境变量中
6. 重启jmeter,创建java Sampler选择刚定义好的测试类
7. 调整好参数即可开始测试。
[java] view plain copy
package com.sampler;
//编写jmeter.sampler插件需加载的包
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;
//处理异常堆栈
import java.io.PrintWriter;
import java.io.StringWriter;
/**
*
* @author wo niu
* @func test ejb interface
*
* 继承虚类AbstractJavaSamplerClient
*/
public class JavaSampler extends AbstractJavaSamplerClient {
// main只是为调试用,最好先调试再打包
//运行前请把jmeter_home/lib下的所有jar包加载到IDE工具环境变量
public static void main(String[] args)
{
Arguments args0 = new Arguments();
args0.addArgument("parm_1","val_1");
args0.addArgument("parm_2","val_2");
args0.addArgument("parm_N","val_N");
JavaSampler test = new JavaSampler();
JavaSamplerContext context = new JavaSamplerContext(args0);
test.setupTest(context);
test.runTest(context);
test.teardownTest(context);
}
/**
* 实现 runTest(JavaSamplerContext context)方法
* runTest()具体实施测试动作
*/
public SampleResult runTest(JavaSamplerContext context) {
/*
* SampleResult只能定义为局部变量,避免出现多线程安全问题
* 网上一些帖子,定义为全域变量,这种做法是错误的
*/
SampleResult results = new SampleResult();
//默认请求成功
results.setSuccessful(true);
results.sampleStart(); //记录响应时间开始
try{
//动态变量从context中读取:
// String key = context.getParameter("key");
//TO-DO ejb接口调用
if(false){ //失败时处理
results.setSuccessful(false);
results.setResponseData("响应数据","utf8");
}
}catch(Throwable e){
e.printStackTrace();
results.setSuccessful(false);
//处理异常堆栈为String,只有String才能回写响应数据
results.setResponseData(toStringStackTrace(e),"utf8");
}
results.sampleEnd(); //记录响应时间结束
return results;
}
/**
* 测试开始时调用,初始化
*/
public void setupTest(JavaSamplerContext context){
}
/**
* 测试结束时调用
*/
public void teardownTest(JavaSamplerContext context){
}
/**
* 定义默认参数
*/
@Override
public Arguments getDefaultParameters() {
Arguments args = new Arguments();
/*
* test data
*/
args.addArgument("parm_1","val_1");
args.addArgument("parm_2","val_2");
args.addArgument("parm_N","val_N");
return args;
}
/**
* 处理异常堆栈为String,只有String才能回写响应数据
* @param e
* @return
*/
private String toStringStackTrace(Throwable e){
String exception = null;
try {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);
exception = sw.toString();
pw.close();
sw.close();
} catch (Exception e1) {
e1.printStackTrace();
}
return exception;
}
}
到此,相信大家对“jmeter怎么编写java请求”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。