平时我们会使用Jmeter测试我们的http接口,但如果使用它测试一个Java API呢?比如工具类。
相比http接口,会稍微复杂些,需要我们写一个测试程序,具体如下:
实现Jmeter的Java Request接口
在Jmeter安装目录下面,我们能找到需要的jar,添加到工程的classpath下面:
Jmeter_home/lib/ext目录下,如果Jmeter已经启动了,这里要重启一下
\_ApacheJMeter_core.jar
\_ApacheJMeter_java.jar
如果我们想建maven工程,则添加如下依赖:
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_core</artifactId>
<version>5.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_java</artifactId>
<version>5.1.1</version>
</dependency>
实现接口,或者继承类:
import java.util.Iterator;
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;
/**
* Jmeter测试程序.
* 或继承AbstractJavaSamplerClient
*/
public class MyTest extends AbstractJavaSamplerClient {
@Override
public void setupTest(JavaSamplerContext javaSamplerContext) {
// 当前测试之前要做工作,相当于junit的before
}
@Override
public SampleResult runTest(JavaSamplerContext javaSamplerContext) {
SampleResult sr = new SampleResult();
sr.sampleStart();
try {
// 测试代码
sr.setSuccessful(true);
} catch(Exception e) {
sr.setSuccessful(false);
getLogger().error("Occur error", e)
}
sr.sampleEnd();
return sr;
}
@Override
public void teardownTest(JavaSamplerContext javaSamplerContext) {
//相当于junit的after
}
@Override
public Arguments getDefaultParameters() {
// 设置一些默认的固定参数
Arguments arguments = new Arguments();
arguments.addArgument("name","zhangsan");
return arguments;
}
}
测试准备完毕,打成jar包,放到Jmeter_home/lib/ext目录下,然后去配置Jmeter测试。
如果Jmeter已经启动了,这里要重启一下