使用Jmete中的Java Reuest,可以对编写的java类或者方法进行测试,Jmeter没有自带编译器,需要借助第三方编译器才能实现,因此使用Java编译器编写测试代码,将测试代码和需要测试的类都放入Jmeter的lib文件夹下,然后再Jmeter中添加Java Reuest,就可以进行相应的测试了,下面结合一个实际的例子说明了如何使用Java Reuest。
1. 打开Java编译器,新建一个项目"JavaRequest",然后新建一个包"Jmeter.JavaRequest".
2. 在"JavaRequest"项目中,引入ApacheJMeter_core.jar"和"ApacheJMeter_java.jar这两个JAR文件.(具体的引入方法参考各个Java编译器的使用方法)
3. 在"Jmeter.JavaRequest"包中新建一个类,名字叫"TestJmeterRequest",这个类要继承"AbstractJavaSamplerClient"类,如果项目引入步骤二中的两个文件,就可以找到"AbstractJavaSamplerClient"类了.
4. "TestJmeterRequest"类在继承"AbstractJavaSamplerClient"类的同时也会继承四个方法,分别是"getDefaultParameters","setupTest","runTest"和"teardownTest"方法."getDefaultParameters"方法主要用于设置传入的参数;"setupTest"方法为初始化方法,用于初始化性能测试时的每个线程."runTest"方法为性能测试时的线程运行体;"teardownTest"方法为测试结束方法,用于结束性能测试中的每个线程.
5. 具体实现代码如下:
package Jmeter.JavaRequest;
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 DataBase extends AbstractJavaSamplerClient {
private static String label = "databaseTest";
private String sql1;
private String sql2;
private SampleResult results;
private String testStr;
public void setupTest(JavaSamplerContext arg0)
{
System.out.println("setupTest");
results = new SampleResult();
testStr = arg0.getParameter("testString", "");
if (testStr != null && testStr.length() > 0) {
results.setSamplerData(testStr);
}
}
public SampleResult runTest(JavaSamplerContext arg0)
{
sql1 = arg0.getParameter("host");
sql2 = arg0.getParameter("port");
SampleResult sr;
sr = new SampleResult();
sr.setSampleLabel(label);
try
{ //这里调用我们要测试的java类,这里我调用的是一个DatabaseTest类
DatabaseTest datatest=new DatabaseTest();;
//datatest.main(null);//调用要测试的方法
datatest.initialConnection();
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("sql1", "");
params.addArgument("sql2", "");
return params;
}
}
6. 把上面的例子打包,然后把生成的"TestJavaRequest.jar"文件拷贝到Jmeter的安装目录lib\ext下.
7. 运行Jmeter,添加一个线程组,然后在该线程组下面添加一个Java请求(在Sampler中),在Java请求的类名称中选择刚创建的类"Jmeter.JavaRequest. TestJavaRequest ",然后添加一个监听器(聚合报告),设置一下模拟的用户数就可以测试了.如果测试不成功,Jmeter会在它自己个输出框中抛出这个字符串.
使用Jmeter自定义Java测试代码,配合Jmeter自带的函数,就可以实现出LoadRunner中"Java Vuser"协议的绝大多数功能.