使用jmeter要求会Java吗_jmeter 测试java协议经验总结

对java协议的良好支持,是jmeter比loadrunner优秀的地方,但是坑也不少,本文将相关点都整理下来备忘

一. 依赖的jar包

使用IDE开发jemter java协议脚本时,需要导入以下几个包,否则会报找不到Class或者其他诡异问题,以下的包在jmeter\lib或者jmeter\lib\ext下找得到:

avalon-framework.jar、

jorphan.jar、

commons-logging.jar、

ApacheJMeter_core.jar、

ApacheJMeter_java.jar、

logkit-2.0.jar

需要注意的是: jmeter的jorphan.jar非常古怪,如果我们开发的脚本也用到类似的jar,请务必保证jmeter\lib下该jar不会被替换且不能存在多个版本,否则启动jmeter报错:

Uncaught Exception java.lang.NoSuchMethodError: org.apache.jorphan.gui.GuiUtils.makeScrollableMenu(Ljavax/swing/JMenu;)V. See log file for details.

二. 编码示范

使用jmeter开发java测试脚本的常规格式如下:

/****/

packagetest;importorg.apache.jmeter.config.Arguments;importorg.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;importorg.apache.jmeter.protocol.java.sampler.JavaSamplerContext;importorg.apache.jmeter.samplers.SampleResult;/*****/

public class PerformanceTest extendsAbstractJavaSamplerClient {/*** 每个线程初始化时会调用且仅调用一次,可放一些初始化代码*/

public voidsetupTest(JavaSamplerContext arg0) {//开始时间

start =System.currentTimeMillis();

}/*** 每个线程销毁时 会调用一次runTest()方法后会调用此方法.*/

public voidteardownTest(JavaSamplerContext arg0) {//结束时间

end =System.currentTimeMillis();//总体耗时

System.err.println("cost time:" + (end - start) / 1000);

}/*** JMeter界面中可手工输入参数,代码里面通过此方法获取*/

publicArguments getDefaultParameters() {

Arguments args= newArguments();returnargs;

}/*** JMeter测试用例入口*/@OverridepublicSampleResult runTest(JavaSamplerContext arg0) {SampleResult result = new SampleResult();

boolean isSuccessful = false;

try {

String strategy = arg0.getParameter("strategy");

String pin = arg0.getParameter("pin");

/*

* 其他构造参数代码

*/

result.sampleStart();

/*

执行测试代码

*/

if(xxx==xxx){

isSuccessful = true;

} else {

isSuccessful = false;

//打印失败信息

//logger.error("接口调用失败,结果信息");

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

} finally {

result.sampleEnd();

result.setSuccessful(isSuccessful);

}

return result;

}

}

三. 路径的一些说明

开发java协议脚本时候常常需要读取一些配置文件的内容,这里又主要分两种情况,spring容器配置文件和普通文本类

1. spring容器类配置

读取spring容器配置文件的读取建议使用 ClassPathXmlApplicationContext类而非FileSystemXmlApplicationContext,因为后者是要写死路径的,不利于后面的打包并部署到jmeter环  境里,示范代码:

ApplicationContext applicationContext = null;public voidsetupTest(JavaSamplerContext context) {try{

applicationContext= new ClassPathXmlApplicationContext("jsf-consumer.xml");}catch(Exception e) {

e.printStackTrace();

}

}

非Spring容器的配置文件,则需要使用如下代码读取:

InputStream is = null;try{

String str= null;

PropertiesTest pt= newPropertiesTest();

Properties pro= newProperties();

is= pt.getClass().getResourceAsStream("/ptest.properties");

pro.load(is);

System.out.println("PAGESIZE-->" + pro.get("PAGESIZE"));

System.out.println("CURRENT_PAGE-->" + pro.get("CURRENT_PAGE"));

}catch(FileNotFoundException e) {e.printStackTrace();

}catch(UnsupportedEncodingException e) {e.printStackTrace();

}catch(IOException e) {e.printStackTrace();

}finally{try{if(is!=null){

is.close();

}

}catch(IOException e) {e.printStackTrace();

}

}

为了能让代码取到xml文件需要按照约定来配置:

(1) 非maven项目,需要放在项目的src目录下,如下图

a691f7a3d36f1913c7a3e94f5d99f171.png

(2) maven项目,除了src目录外还可以放在src/main/resource目录下

2dc7cd99f8e9bdbe91f5592181a47d00.png

四. 打包和部署

测试代码打包步骤如下:

1. 右键--->export

25f9366c4f1f9703725e1d1105b5f63b.png

2. 选择Runnable JAR file

890f0b96c724a647ab453778ac1a5c76.png

3. 进行配置信息和保存路径的设置

注意,如果launch configuration找不到目标类,则可以执行一次这个类的Main函数

35a13a133e30bfff5782d809806a9ce0.png

4.单击"Finish",即可得到一个jar和一个对应名字的目录,比如abcTest.jar和abcTest_lib 目录

623fbebe77e2d3351e4694e9e58d31a7.png

5. 将上面的文件和目录直接拷贝到jmeter/lib/ext目录下即可

通常情况下,以上步骤不会有任何问题,如果非常不幸遇到诡异问题,请参照以下文章:http://www.cnblogs.com/onmyway20xx/p/4260216.html

将生成的abcTest.jar放在lib/ext目录,将abcTest_lib目录下文件去除jmeter本身自带的几个jar、剩余的jar拷贝到lib目录下!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值