准备工作
1、maven工程,dubbo消费者
2、普通java接口同样适用本案例
操作步骤
1、引入jar包
<!--jmeter依赖的jar包 --> <dependency> <groupId>org.apache.jmeter</groupId> <artifactId>ApacheJMeter_core</artifactId> <version>3.0</version> <exclusions> <exclusion> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-all</artifactId> </exclusion> <exclusion> <groupId>commons-math3</groupId> <artifactId>commons-math3</artifactId> </exclusion> <exclusion> <groupId>commons-pool2</groupId> <artifactId>commons-pool2</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.jmeter</groupId> <artifactId>ApacheJMeter_java</artifactId> <version>3.0</version> <exclusions> <exclusion> <groupId>commons-math3</groupId> <artifactId>commons-math3</artifactId> </exclusion> <exclusion> <groupId>commons-pool2</groupId> <artifactId>commons-pool2</artifactId> </exclusion> <exclusion> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-all</artifactId> </exclusion> </exclusions> </dependency>
2、 编写测试类
public class ServiceJavaSampler extends AbstractJavaSamplerClient {
private static final ApplicationContext context = new ClassPathXmlApplicationContext(
new String[] { "spring/scm-context.xml" });
private IScmBasegoodsService demoService;
public void setupTest(JavaSamplerContext arg0){
demoService = (IScmBasegoodsService) context
.getBean("scmBasegoodsService");
}
@Override
public SampleResult runTest(JavaSamplerContext arg0) {
SampleResult sr = new SampleResult();
try {
sr.sampleStart();
sr.setSampleLabel("basegoods接口测试");
demoService = (IScmBasegoodsService) context
.getBean("scmBasegoodsService");
Page page=new Page(1, 2000, 5000);
PageResult result=demoService.findPubBasegoodsList(page, "");
if(result!=null) {
sr.setSuccessful(true);
sr.setResponseData("from provider:" + result, "utf-8");
} else {
sr.setSuccessful(false);
}
//sr.setDataType(SampleResult.TEXT);
sr.sampleEnd();
} catch (Exception e) {
e.printStackTrace();
}
return sr;
}
}
重点:继承AbstractJavaSamplerClient类,实现runTest测试方法。通过setSuccessful方法来设置,测试的成功与否。根据不同的业务可在此工程中编写多个测试类。
3、本地Main方法执行测试类
public class TestMain {
public static final void main(String[] args) {
JavaSamplerContext arg0 = new JavaSamplerContext(new Arguments());
ServiceJavaSampler test = new ServiceJavaSampler();
test.setupTest(arg0);
test.runTest(arg0);
}
}
重点:确保本地执行没有问题,再集成Jmeter
4、Jmeter集成
a、使用maven打包项目,生成相应的jar包和依赖包。
b、将打包的jar放在jmeter的lib/ext目录
c、将依赖的jar放在jmeter的lib/ext目录,并且配置到jmeter的环境变量中
将依赖的jar(打包的lib目录)复制重命名为lib-scm-dependency(名称自定义即可)
编辑bin目录下的jmeter.properties,增加search_paths,多个目录;相隔
#search_paths=/app1/lib;/app2/lib
search_paths='D:\Program Files (x86)\apache-jmeter-3.1\lib\ext\lib-scm-dependency'
5、jmeter测试
测试计划增加线程组,根据实际情况进行压测。新建Java请求,知道我们的测试类即可
注意事项:
1、如果配置完成,打开jmeter报错,可能是依赖的jar与jmeter的自带的jar冲突,需要手动排查处理。