jmeter之java请求二次开发
2017-06-14 16:34
169 查看
说明与步骤
原则上jmeter的java请求,可以压测一切可使用java访问的东西,包括Redis,MQ等等。需要lib/ext中的ApacheJMeter_core.jar,如扩展java请求则还需要ApacheJMeter_java.jar,扩展http请求则需要ApacheJMeter_http.jar,依次类推,都在lib/ext中,另外lib中的avalon-framework-4.1.4.jar根据实际需要也会用到(jmeter3.2中名称是framework)
下文中的代码,则是具体的被测类和测试类的编写。(当然,你要先用eclipse创建工程,导入前面说的jar包,再新建package,新建class,撸代码),完成后导出被测jar包放到lib中,测试用的jar包放到lib/ext中。
新建java请求,就可以看到。并传入响应的参数。比如method=add,num1=111,num2=222,然后点击执行,就可以看到结果,如下图。
代码实例
被测类
public class Calc {public int add(int x, int y){
return x + y;
}
public int minus(int x, int y){ return x - y; }
}
测试类
package com.cmos.test;/*
* 一般来说,扩展java请求通常需要的类有:
* AbstractJavaSamplerClient
* JavaSamplerContext 容器类
* SampleResult 结果统计类
* Argument 参数类
* */
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.config.Arguments;
import java.util.Random;
import com.cmos.JmeterTest.Calc;
public class TestCalc extends AbstractJavaSamplerClient {
/*
* 一般来说,需要定义全局变量,是用来实现逻辑处理
* 包括控制变量、入参、结果。一般由被测方法决定
* */
private String method;
private int x;
private int y;
private String resultData;
Calc c = new Calc();
/*
* 通过getDefaultParameters()可以来定义入参
*
* */
public Arguments getDefaultParameters(){ //定义属性对象,用来添加GUI参数 Arguments params = new Arguments(); //添加一个GUI参数,名称叫"method",值是"add" params.addArgument("method", "add"); params.addArgument("num1","111"); params.addArgument("num2",null); return params; } //每个线程测试前执行一次,做一些初始化工作; public void setupTest(JavaSamplerContext arg0) { } //JavaSampleContext arg0()就是用来接收GUI所提交的 @Override public SampleResult runTest(JavaSamplerContext arg0) { // TODO Auto-generated method stub SampleResult sr = new SampleResult(); try{ //将GUI界面传递过来的值赋给全局变量 method = arg0.getParameter("method"); x = Integer.parseInt(arg0.getParameter("num1",null)); y = Integer.parseInt(arg0.getParameter("num2",null)); //是表示请求开始计时 sr.sampleStart(); //实际测试不需要,模拟处理过程中所需消耗的时间
// Random rnd = new Random();
// Thread.sleep(rnd.nextInt(1000));
//通过GUI传递的method参数来决定所执行的方法 if(method.equals("add")){ resultData = String.valueOf(c.add(x, y)); } else if(method.equals("minus")){ resultData = String.valueOf(c.minus(x, y)); } if(resultData != null && resultData.length()>0){ //设置响应数据为resutlData;也可以用sr.setSamplerData("OK"); sr.setResponseData(resultData,null); //设置响应代码为0 sr.setResponseCode("0000"); //设置响应类型为text sr.setContentType(SampleResult.TEXT); //设置响应状态为true sr.setSuccessful(true); //设置响应信息 sr.setResponseMessage("方法执行成功!"); } else{ sr.setResponseData(resultData,null); //设置响应代码为-9999 sr.setResponseCode("-9999"); //设置响应类型为txt sr.setContentType(SampleResult.TEXT); //设置响应状态为true sr.setSuccessful(false); //设置响应信息 sr.setResponseMessage("方法执行失败!"); } } catch(Exception e){ sr.setResponseData(e.getMessage(),null); e.printStackTrace(); sr.setResponseCode("-1"); sr.setContentType(SampleResult.TEXT); sr.setSuccessful(false); sr.setResponseMessage("捕获异常!"); } finally{ //表示请求结束计时 sr.sampleEnd(); } //表示返回这个SampleResult对象sr return sr; } public void teardownTest(JavaSamplerContext arg0) { // System.out.println(end); // System.out.println("The cost is"+(end-start)/1000); }
}
其他参考链接
http://www.cnblogs.com/yangxia-test/p/4019541.html相关文章推荐
- jmeter二次开发之javasample请求
- sms 的java二次开发
- 永中Office二次开发_JAVA的二次开发2
- Java开发学习之道:Java开源项目源码阅读方法及二次开发方法
- java web开发将请求的参数转换为bean对象
- 使用JMeter的Java请求功能测试Hetty性能
- JAVA二次开发GIS的QQ群(17765831
- jmeter java请求参数配置
- (转)JMeter进行Java 请求测试
- javaweb_jeecms 搭建二次开发环境
- 浅谈shop++二次开发 - 请求处理
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之14.Servlet请求头信息
- 短信猫JAVA二次开发包SMSLib,org.smslib.TimeoutException: No response from device解决方案
- 【转载】Flexpaper二次开发入门教程(ajava.org发布)[PDF]
- java微信公众平台开发二(请求来源校验)
- 永中Office二次开发_JAVA的二次开发1
- 使用JMeter进行性能测试(Java请求)
- jmeter 提取java请求的response数据
- Jmeter写Java请求的过程
- 安卓开发向服务发送请求,出现java java.lang.IllegalArgumentException的问题