欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Jmeter学习——创建自定义的Java Sampler,jmetersampler

来源: javaer 分享于  点击 31559 次 点评:272

Jmeter学习——创建自定义的Java Sampler,jmetersampler


本文的思维导图如下:


本文主要讲解如何创建自定义Java Sampler,包括Java Sampler的简要说明,创建Java Sampler jar包的步骤,使用自定义Java Sampler进行测试


1、简要说明

实际使用中,通过创建一个类实现JavaSamplerClient接口或继承AbstractJavaSamplerClient来创建自定义的Java Sampler。

重要的方法说明:

Arguments getDefaultParameters() 用于获取界面的参数

SampleResult runTest(JavaSamplerContext context) 执行测试类似于LR的Action,result.sampleStart()一个事务开始,result.sampleEnd()一个事务 结束

void setupTest(JavaSamplerContext context) 测试初始化方法,类似于LR的init和Junit中的setUp()

void teardownTest(JavaSamplerContext context) 测试收尾方法,类似于LR的end和Junit中的tearDown()

执行的先后顺序为:

getDefaultParameters() --> setupTest(JavaSamplerContext context) --> runTest(JavaSamplerContext context) --> teardownTest(JavaSamplerContext context)

常用的方法:
1)addArgument("name", "value")    定义参数
2)sampleStart()    定义事务的开始,类似于LR的lr_start_transaction,和LR一样事务间不要放无关代码
3)sampleEnd()    定义事务的结束,类似于LR的lr_end_transaction
4)setSuccessful(true),setSuccessful(false)   设置运行结果的成功或失败,Jmeter统计成功失败的次数,在聚合报告中能够体现。


2、创建步骤

1)创建Java Project,命名为jmeter-java-sampler

2)将{JMETER_HOME}\lib\ext目录下的ApacheJMeter_components.jar,ApacheJMeter_core.jar,ApacheJMeter_java.jar添加到工程的build path中,如下图


3)新建包org.apache.jmeter.protocol.java.test(不是这个包名,后面有可能识别不了),添加下面代码:

Hello.java

package org.apache.jmeter.protocol.java.test;


public class Hello {

public String sayHello() {
return "Hello";
}


public String sayHelloToPerson(String s) {
if (s == null || s.equals(""))
s = "nobody";
return (new StringBuilder()).append("Hello ").append(s).toString();
}


public int sum(int a, int b) {
return a + b;
}
}


HelloTest.java

package org.apache.jmeter.protocol.java.test;


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 HelloTest 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");
SampleResult sr = new SampleResult();
sr.setSampleLabel("Java请求哦");
try {
sr.sampleStart();// jmeter 开始统计响应时间标记
Hello test = new Hello();
// 通过下面的操作就可以将被测方法的响应输出到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 结束统计响应时间标记
}
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
Arguments params = new Arguments();
params.addArgument("num1", "1");// 设置参数,并赋予默认值1
params.addArgument("num2", "2");// 设置参数,并赋予默认值2
JavaSamplerContext arg0 = new JavaSamplerContext(params);
HelloTest test = new HelloTest();
test.setupTest(arg0);
test.runTest(arg0);
test.teardownTest(arg0);
}
}

4)Export为Jar File:hello.jar,如下图:


5)将此hello.jar包放入{JMETER_HOME}\lib\ext目录


3、使用例子

打开Jemter,添加线程组,为线程组添加Java请求,并为线程组添加察看结果树,如下图:


运行测试脚本,结果如下图:


相关文章

    暂无相关文章
相关栏目:

用户点评