新项目用jmeter做性能测试,导入别人写好的jar包,发现有if控制器和java请求,可是我看不懂这个脚本到底在干嘛,只好自己摸索。
java请求要自己写一个runable的jar包,继承jmeter的AbstractJavaSamplerContext类,然后改写runtest方法。具体代码如下。
步骤如下:
1. 打开eclipse,把代码写好,并export为runnable jar file (切记,jar file在jmeter里是找不到的)
默认导入代码会找不到命名空间,记得要在属性->build path里把jmeter的lib里的jar都导入,如下图
2. 把jar文件放到jmeter里的 lib\ext里,重启jmeter,添加线程组-> java请求 ->添加查看结果树。
就能看到执行结果了。
但是if控制器我还没设成功,等我找到原因再继续更新。
package jmeter_sample;
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 PerformanceTest extends AbstractJavaSamplerClient
{
private static long start = 0;
private static long end =0;
private String a,b, result;
public void setupTest(JavaSamplerContext arg0)
{
start = System.currentTimeMillis();
}
public void teardownTest(JavaSamplerContext arg0)
{
end = System.currentTimeMillis();
System.err.println("cost time" + (end-start)/1000);
}
public Arguments getDefaultParameters()
{
Arguments args = new Arguments();
args.addArgument("num1","");
args.addArgument("num2","");
return args;
}
private static int sum(int a, int b)
{return a+b;}
public SampleResult runTest(JavaSamplerContext arg0)
{
SampleResult sr = new SampleResult();
a = arg0.getParameter("num1");
b = arg0.getParameter("num2");
sr.setSampleLabel("hui");
try
{
sr.sampleStart();
result = String.valueOf( sum(Integer.parseInt(a),Integer.parseInt(b)));
if(result !=null &&result.length()>0)
{
sr.setResponseData("结果是 "+result,null);
sr.setDataType(SampleResult.TEXT);
}
sr.setSuccessful(true);
sr.sampleEnd();
}
catch(Exception e)
{ e.printStackTrace();}
return sr;
}
public static void main(String[] args)
{
System.out.print("hello");
}
}
时间: 01-24