1、java请求说明
需要压测某些java方法或一些请求需要通过编写代码实现
1.1、依赖jar包:
jmeter下/lib/ext中的ApacheJMeter_java.jar(必须)、ApacheJMeter_core.jar(必须)
如需在本地调试。还需引入jar包:avalon-framework-4.1.4.jar、jorphan.jar、logkit-2.0.jar
测试类必须继承org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient类
1.2、主要有四个方法:
getDefaultParameters:设置输入参数
setupTest:执行测试前的初始化
runTest:执行测试方法体,被测代码需要在该方法中实现
teardownTest:执行测试后动作
2、代码样例,简单的求和测试
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; public class Sum extends AbstractJavaSamplerClient { private String a; private String b; /** Holds the result data (shown as Response Data in the Tree display). */ private String resultData; // 这个方法是用来自定义java方法入参的。 // params.addArgument("num1","");表示入参名字叫num1,默认值为空。 //设置可用参数及的默认值; public Arguments getDefaultParameters() { Arguments params = new Arguments(); params.addArgument("num1", ""); params.addArgument("num2", ""); return params; } //每个线程测试前执行一次,做一些初始化工作; public void setupTest(JavaSamplerContext arg0) { } //开始测试,从arg0参数可以获得参数值; public SampleResult runTest(JavaSamplerContext arg0) { a = arg0.getParameter("num1"); b = arg0.getParameter("num2"); //System.out.println("a:"+a+" "+"b:"+b); SampleResult sr = new SampleResult(); sr.setSampleLabel( "求和"); //设置采样器名称 try { sr.sampleStart();// jmeter 开始统计响应时间标记 // 通过下面的操作就可以将被测方法的响应输出到Jmeter的察看结果树中的响应数据里面了。 resultData = String.valueOf(Integer.parseInt(a)+Integer .parseInt(b)); //System.out.println(resultData); if (resultData != null && resultData.length() > 0) { sr.setResponseData("结果是:"+resultData, null); sr.setDataType(SampleResult.TEXT); } // System.out.println(resultData); sr.setSuccessful(true); } catch (Throwable e) { sr.setSuccessful(false); e.printStackTrace(); } finally { sr.sampleEnd();// jmeter 结束统计响应时间标记 } return sr; } //测试结束时调用; public void teardownTest(JavaSamplerContext arg0) { //System.out.println(end); //System.out.println("The cost is"+(end-start)/1000); } // main只是为了调试用,最后打jar包的时候注释掉。 public static void main(String[] args) { // TODO Auto-generated method stub Arguments params = new Arguments(); params.addArgument("num1", "1");// 设置参数,并赋予默认值1 params.addArgument("num2", "2");// 设置参数,并赋予默认值2 JavaSamplerContext arg0 = new JavaSamplerContext(params); System.out.println(arg0.getIntParameter("num1")); Sum test = new Sum(); test.setupTest(arg0); test.runTest(arg0); test.teardownTest(arg0); } }
3、将工程导出为jar文件
4、使用jmeter测试
将导出的jar包放在jmeter目录下的/lib/ext下,在类名称中选择Sum