比较重要的文档
http://jmeter.apache.org/api/org/apache/jmeter/protocol/java/sampler/JavaSamplerContext.html
http://jmeter.apache.org/api/org/apache/jmeter/config/Argument.html
首先我们需要查看某个类的方法可以访问官网去查看对应的方法,
也可以想在 elipse ctrl+shift+T 参考到某个类应该是在那个包里面,
比如 jmeter 的javasample请求 中的 SampleResult
package com.test.webservice;
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;
}
}
package com.test.webservice;
import java.util.logging.Logger;
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;
import com.test.webservice.Hello;
public class perftest extends AbstractJavaSamplerClient {
private String a;
private String b;
// resultdata 会返回在结果数中
private String resultData;
//这个方法是用来自定义java方法的入参的。
//params.addArgument("num1",""),表示入参名字为num1,默认值为空。
//设置可用参数及默认值 这个是从界面获取参数的东西
//JavaSamplerClient类的方法,我们从AbstractJavaSamplerClient继承,详细可以查看
//http://jmeter.apache.org/api/org/apache/jmeter/protocol/java/sampler/AbstractJavaSamplerClient.html
public Arguments getDefaultParameters(){
Arguments params=new Arguments();
params.addArgument("num1","1");
params.addArgument("num2", "2");
return params;
}
//每个线程测试前执行一次,做一些初始化工作;
public void setupTest(JavaSamplerContext arg0){
}
//开始测试,从arg0参数可以获取参数值;
@Override
public SampleResult runTest(JavaSamplerContext arg0) {
a=arg0.getParameter("num1");
b=arg0.getParameter("num2");
SampleResult sr=new SampleResult();
//这个是在查看结果树中显示,表示的是那个运行后名称,可以不用设置
sr.setSampleLabel("java请求哦");
try{
//jmeter 开始统计响应时间标记
sr.sampleStart();
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(sr.getResponseDataAsString());
this.getLogger().info("ssssss");;
}
sr.setSuccessful(true);
}catch(Throwable e){
sr.setSuccessful(false);
e.printStackTrace();
}finally{
//jmeter 结束统计响应时间标记
sr.sampleEnd();
}
return sr;
}
//测试结束时调用;teardown
public void teardownTest(JavaSamplerContext arg0){
}
// mian方法 主要需要自己设置参数 参数类 arguments java请求上下文管理,如果导入java需要把main方法注释
public static void main(String[] args) {
//初始一个参数参数的类,然后把东西传入
Arguments params=new Arguments();
params.addArgument("num1", "3");
params.addArgument("num2", "4");
//初始一个java请求的上下文管理
JavaSamplerContext arg0=new JavaSamplerContext(params);
perftest test=new perftest();
test.setupTest(arg0);
test.runTest(arg0);
test.teardownTest(arg0);
}
}