目的:对Java程序进行测试
目录
一、核心步骤
二、实例
三、JMeter Java Sampler介绍
四、自带Java Request Sampler
一、核心步骤
1.创建一个Java工程;
2.将JMeter的lib目录下的jar文件添加进此工程的Build Path;
3.创建一个类并实现JavaSamplerClient接口或继承AbstractJavaSamplerClient,并重写;
publicArguments getDefaultParameters();设置可用参数及的默认值; public voidsetupTest(JavaSamplerContext arg0):每个线程测试前执行一次,做一些初始化工作; publicSampleResult runTest(JavaSamplerContext arg0):开始测试,从arg0参数可以获得参数值; public void teardownTest(JavaSamplerContext arg0):测试结束时调用;
4.Export为Runnable Jar File;
5.将此jar包放入JMETER_HOMElibext目录;
6.以管理员身份打开JMeter;
7.创建线程组、Java Request、查看结果树,进行测试;
二、实例
1.在eclipse里面新建一个工程:JavaForJMeter
2.把{Jmeter_home}lib目录下的所有jar添加进此工程的Build Path;
3.添加类Hello,代码如下:
packagecom.test.webservice; public classHello { publicString sayHello() { return "Hello"; } publicString sayHelloToPerson(String s) { if(s == null || s.equals("")) s = "nobody"; return (new StringBuilder()).append("Hello ").append(s).toString(); } public int sum(int a,intb) { return a+b; } }
4.添加类perftest,并继承AbstractJavaSamplerClient,并添加代码如下:
注意:System.out等的输出会显示在启动JMeter时的命令窗口内,但过多的输出会影响性能的准确性。
packagecom.test.webservice; importorg.apache.jmeter.config.Arguments; importorg.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient; importorg.apache.jmeter.protocol.java.sampler.JavaSamplerContext; importorg.apache.jmeter.samplers.SampleResult; importcom.test.webservice.Hello; public class perftest extendsAbstractJavaSamplerClient { privateString a; privateString b; /**Holds the result data (shown as Response Data in the Tree display). */ privateString resultData; //这个方法是用来自定义java方法入参的。 //params.addArgument("num1","");表示入参名字叫num1,默认值为空。 //设置可用参数及的默认值; publicArguments getDefaultParameters() { Arguments params = newArguments(); params.addArgument("num1", ""); params.addArgument("num2", ""); returnparams; } //每个线程测试前执行一次,做一些初始化工作; public voidsetupTest(JavaSamplerContext arg0) { } //开始测试,从arg0参数可以获得参数值; publicSampleResult runTest(JavaSamplerContext arg0) { a = arg0.getParameter("num1"); b = arg0.getParameter("num2"); SampleResult sr = newSampleResult();
sr.setSampleLabel( "Java请求哦"); try{ sr.sampleStart();//jmeter 开始统计响应时间标记 Hello test = newHello(); //通过下面的操作就可以将被测方法的响应输出到Jmeter的察看结果树中的响应数据里面了。 resultData =String.valueOf(test.sum(Integer.parseInt(a), Integer .parseInt(b))); 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 结束统计响应时间标记 } returnsr; } //测试结束时调用; public voidteardownTest(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); perftestbbb test = new perftestbbb(); test.setupTest(arg0); test.runTest(arg0); test.teardownTest(arg0); } */ }
5.Export为Runnable Jar File:hello.jar
6.将此hello.jar包放入JMETER_HOMElibext目录;
7.打开JMeter,添加线程组,添加Java请求,查看结果树。
三、JMeter Java Sampler介绍
Arguments | getDefaultParameters()用于获取界面的参数 |
SampleResult | runTest(JavaSamplerContextcontext) 类似于LR的Action,result.sampleStart()一个事务开始,result.sampleEnd()一个事务结束 |
void | setupTest(JavaSamplerContextcontext)初始化方法,类似于LR的init和Junit中的setUp() |
void | teardownTest(JavaSamplerContextcontext)类似于LR的end和Junit中的tearDown() |
JMeter默认实现了两个Java Request Sampler:SleepTest Sampler和JavaTest Sampler。
JavaTest Sampler不向服务器发送数据请求,一般被用作调试目的使用。
至此,这已讲解完了。