您的位置:首页 > 编程语言 > Java开发

jmeter java sampler测试java接口(二)测试自己的代码

2016-03-27 22:36 537 查看
前面一节是解析javatest代码,这一节进行简单的方法测试

测试代码 : 传入一个Str值,放到集合里面遍历集合在日志中打印出来。

说明:

1 执行时间:在 results.sampleStart()和 results.sampleEnd();之间的时间为聚合报告里面测试用例的执行时间,results.sampleStart()之前的操作不记录到测试用例里面的时间,所以与测试接口无关的一些操作都应该放到results.sampleStart()之前或者 results.sampleEnd()之后OR放到setupTest()和teardownTest()里面

2 方法介绍:

context.getParameter():从Arguments获取值

getDefaultParameters() :从jmeter的图形窗口获取用户设置的值供context使用

3 SampleResult返回测试结果:体现在返回code,message,请求报文和相应报文。对应在查看结果数里面的一些数据

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
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 org.apache.jorphan.logging.LoggingManager;
import org.apache.log.Logger;

public class TestOne extends AbstractJavaSamplerClient implements Serializable {

private static final Logger LOG = LoggingManager.getLoggerForClass();

private static final long serialVersionUID = 240L;
//定义常量getDefaultParameters()使用
private static final String Str1 = "Str1_Value";
//自定义的参数
private String str1;

/**
* Default constructor for <code>JavaTest</code>.
*
* The Java Sampler uses the default constructor to instantiate an instance
* of the client class.
*/
public TestOne() {
LOG.debug(whoAmI() + "\tConstruct");
}

@Override
public void setupTest(JavaSamplerContext context) {
if (LOG.isDebugEnabled()) {
LOG.debug(whoAmI() + "\tsetupTest()");
}
}

@Override
public Arguments getDefaultParameters() {
Arguments params = new Arguments();
//通过jmter的图形框进行传参,无默认值
params.addArgument(Str1,"");
return params;
}

@Override
public SampleResult runTest(JavaSamplerContext context) {

//通过传参给变量赋值
str1 = context.getParameter(Str1);
LOG.info(str1+"");
SampleResult results = new SampleResult();
//返回请求值,体现在jmeter查看结果数请求里面
results.setSamplerData("请求参数"+str1);

// Record sample start time.
results.sampleStart();
try {
// Execute the sample. In this case sleep for the
// specified time, if any
//测试代码
List<String> arrList=new ArrayList<String>();
arrList.add(str1);
arrList.add("c");
arrList.add("d");
Iterator<String> iter=arrList.iterator();
while(iter.hasNext())
{
//                 System.out.print(iter.next()+" ");
LOG.info(iter.next()+"");

}
results.setSuccessful(true);//这里决定测试用例成功还是失败
//返回结果
results.setResponseData("响应结果", null);

} catch (Exception e) {
LOG.warn("JavaTest: interrupted.");
results.setSuccessful(true);
} finally {
// Record end time and populate the results.
results.sampleEnd();
//设置返回信息
results.setResponseCode("200");
results.setResponseMessage("成功测试");
results.setSampleLabel("样式1");

}
if (LOG.isDebugEnabled()) {
LOG.debug(whoAmI() + "\trunTest()" + "\tTime:\t" + results.getTime());
}

return results;
}
private String whoAmI() {
StringBuilder sb = new StringBuilder();
sb.append(Thread.currentThread().toString());
sb.append("@");
sb.append(Integer.toHexString(hashCode()));
return sb.toString();
}

}


导出jar包到/lib/ext下面



结果展示,

一:日志,代码中的log.info



二:查看结果树

results.setResponseCode(“200”);

results.setResponseMessage(“成功测试”);

results.setSampleLabel(“样式1”);



三:请求

results.setSamplerData(“请求参数”+str1);



四:响应

results.setResponseData(“响应结果”, null);



至此javasampler进行java方法测试已经弄完了。如果要测试java接口只需要在runTest()里面调用接口就可以了。前面虽然有使用beanshell进行java方法测试的介绍,不过建议测试java接口还是采用这种方法。beanshell作为辅导。

jmeter有了java sampler就可以为所欲为了,几乎可以测试任何请求。前面测试ftp请求也可以用java sampler,包括测试数据库操作等等
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java jmeter 测试