这里我用到主要JMeter的线程和报表,扩展了他的“Java请求”这个应用类别。要扩展此应用,要用到lib/ext/ApacheJMeter_java.jar,他封装此应用。
首先,需要继承ApacheJMeter_java.jar中的抽象类AbstractJavaSamplerClient,它提供了四个抽象方法: void setupTest(JavaSamplerContext arg0),SampleResult runTest(JavaSamplerContext arg0), void teardownTest(JavaSamplerContext arg0), Arguments getDefaultParameters()。setupTest和teardownTest与JUnit中的类似,分别在测试的开始和结束时执行。 runTest为主要测试方法,所有测试程序都在这里完成,JavaSamplerContext参数封装测试中需要的所有外界数据(如配置信息等)。其 SampleResult封装了所有测试结果(如:测试是否成功?程序执行时间等),getDefaultParameters用于把测试的一些默认数据在程序运行前显示到JMeter客户端,这个可以和runTest配合使用,实现数据的呈现和配置。
下面为程序:
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;
import com.bizlogic.icwallets.server.Test;
public class PcTest extends AbstractJavaSamplerClient
{
private static String label = "pcTest";
private String name;
private String address;
public void setupTest(JavaSamplerContext arg0)
{
System.out.println("setupTest");
}
public SampleResult runTest(JavaSamplerContext arg0)
{
name = arg0.getParameter("name");
address = arg0.getParameter("address");
SampleResult sr;
sr = new SampleResult();
sr.setSampleLabel(label);
try
{ //这里调用我们要测试的java类,这里我调用的是一个Test类
Test test = new Test();
test.start(null);
sr.sampleStart(); // 记录程序执行时间,以及执行结果
sr.setSuccessful(true);
System.out.println("send over!");
} catch (Throwable e)
{
System.out.println("Exception is "+e.getMessage());
sr.setSuccessful(false);
} finally
{
sr.sampleEnd();
}
return sr;
}
public void teardownTest(JavaSamplerContext arg0)
{
}
public Arguments getDefaultParameters()
{
Arguments params = new Arguments();
params.addArgument("name", "JMeter");
params.addArgument("address", "localhost");
return params;
}
}
如何将我们写的测试类加入到Jmeter中了?
在Jmeter的lib/ext下有一个ApacheJMeter_java.jar, 首先解压ApacheJMeter_java.jar,解压后会出现一个org的文件夹,把写好的应用放在org.apache.jmeter.protocol.java.test里,将其打包成ApacheJMeter_java.jar(在dos中进入 C盘,执行“jar cf ApacheJMeter_java.jarorg” ,org文件夹放在C:盘),放到lib/ext下,JMeter运行时即可找到。同时还要把用户自己编写的应用所依赖的包放在lib下。运行JMeter。界面打开后,右键“测试计划”,添加线程组;右键“线程组”-添加-Sampler-Java请求,在类名称处选择刚才写好的类。