编写辅助函数并导入jmeter
编写辅助函数
要想将Java的jar导入到Jmeter的Java请求中,需要编写Jmeter的辅助方法,常用的方法如下:
1)public Arguments getDefaultParameters(),用于获取Jmeter界面上的参数。如下所示:

2)public void setupTest(JavaSamplerContext context),每个线程只执行一次,编写一些初始化数据,类似于LoadRunner中的JAVA Vuser中的Init()函数和Junit的setUp();
3)public SampleResult runTest(JavaSamplerContext context) ,JmeterSampler的主方法,类似于LoadRunner中的JAVA Vuser中的Action()函数;
4)public void teardownTest(JavaSamplerContext context),每个线程执行一次,类似于LoadRunner中的JAVA Vuser中的end()函数和Junit的tearDown();测试结束时调用,常用来编写关闭流资源,关闭数据库连接,没有的话,就什么都不要写。
上述方法在执行的时候是有先后顺序的,类似于Testng,执行的先后顺序为:
getDefaultParameters()>setupTest(JavaSamplerContext context)>runTest(JavaSamplerContext context)>teardownTest(JavaSamplerContext context) 以上的四个方法组成了JavaSampler的基本结构,缺一不可。
除了上述四个主要方法外,还有如下方法:
sampleStart()用来定义一个事务的开始;
sampleEnd()用来定义一个事务的结束;
addArgument("参数名称","参数值"),定义参数;
setSuccessful("true/false"),设置运行结果的成功和失败,用来帮助Jmeter统计成功、失败的次数,并在聚合报告中给与体现;
查看结果树的显示方法
必须在程序中编写如下代码,才能将运行结果输出在"查看结果树"中。代码如下:
if(resultData !=null&& resultData.length() >0) { sr.setResponseData(resultData,null);//请求头中会多个类型输出 Data type ("text"|"bin"|""): text sr.setDataType(SampleResult.TEXT); }
代码中的resultData为String的实例对象,sr为SampleResult的实例对象;
JmeterSampler的编写
为了实现SumDemo类中的求和功能,编写的JmeterSampler的代码如下所示:
packagecom.sum.demo;importorg.apache.jmeter.config.Arguments;importorg.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;importorg.apache.jmeter.protocol.java.sampler.JavaSamplerContext;importorg.apache.jmeter.samplers.SampleResult;publicclassJmeterSamplerextendsAbstractJavaSamplerClient{privateMath ma=null;privateString a;privateString b;privateString resultData;/**通过SumDemo我们知道我们需要传入参数a,b,
* 所以使用这个方法来定义方法的入参*/publicArgumentsgetDefaultParameters(){ Arguments params =newArguments(); params.addArgument("numa",""); params.addArgument("numb","");returnparams; }//做一些初始化操作,每个线程执行一次publicvoidsetupTest(JavaSamplerContext context){ System.out.println("执行开始"); ma=newMath(); a = context.getParameter("numa"); b = context.getParameter("numb"); }@OverridepublicSampleResultrunTest(JavaSamplerContext context){ SampleResult sr =newSampleResult(); sr.setSamplerData("请求参数numa:"+a+"\t"+"请求参数numb:"+b);try{ sr.sampleStart();//事务开始resultData = String.valueOf(ma.sumTest(Integer.parseInt(a), Integer.parseInt(b)));if(resultData !=null&& resultData.length() >0) { sr.setResponseData("结果是:"+resultData,null); sr.setDataType(SampleResult.TEXT); sr.setSuccessful(true); }}catch(Throwable e) { sr.setSuccessful(false); e.printStackTrace(); }finally{ sr.sampleEnd();//事务结束}returnsr; }publicvoidteardownTest(JavaSamplerContext context){ System.out.println("执行完毕"); } }
导出jar
选中此时的Java工程;将jar命名为com.demo.jmeterTest。

右键->Export,选择导出jar;

点击next,选择JAR file,并将jar命名为:sum.demo.jmeter.sampler.jar(名字任取哦)

点击finish,此时jar就成功导出了。
将jar导入到Jmeter
将sum.demo.jmeter.sampler.jar复制到\apache-jmeter-3.1\lib\ext目录下,如果JAVA工程还依赖有其他的jar包,我们就将其全部复制到\apache-jmeter-3.1\lib目录下。

转自https://gitbook.cn/books/5a27cc4b3050094d64d2163b/index.html