转、

一、在java编辑器(此处以eclipse为例)中新建一个项目-包-类testnumber;

二、生成jmeter可执行的jar包时,必须将jmeter目录下的lib/ext中ApacheJMeter_core.jar和ApacheJMeter_java.jar两个jar包拷贝到项目中,引入这两个jar包;

三、类testnumber继承AbstractJavaSamplerClient类,AbstractJavaSamplerClient存在于ApacheJMeter_java.jar这个JAR包中,引用即可调用;

四、类testnumber继承AbstractJavaSamplerClient类的时候,需要实现四个方法,分别是

setupTest():初始化方法,用于初始化性能测试时的每个线程;//相当于LR的init();

getDefaultParameters():主要用于设置传入的参数;

runTest():为性能测试时的线程运行体;//相当于LR的ACTION

teardownTest():测试结束方法,用于结束性能测试中的每个线程。//相当于LR的end();

五,具体实现的代码如下:

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 TestNum extendsAbstractJavaSamplerClient{privateSampleResult results;/*** 输入的数字*/

privateString inNum;/*** 需要匹配的数字*/

privateString resultNum;/*** 初始化方法,初始化性能测试时的每个线程

* 实际运行时每个线程仅执行一次,在测试方法运行前执行,类似于LoadRunner中的init方法*/

public voidsetupTest(JavaSamplerContext jsc) {

results= newSampleResult();

inNum= jsc.getParameter("inNum", "");

resultNum= jsc.getParameter("resultNum", "");if (inNum != null && inNum.length() > 0){

results.setSamplerData(inNum);

}if (resultNum != null && resultNum.length() > 0){

results.setSamplerData(resultNum);

}

}/*** 设置传入参数

* 可以设置多个,已设置的参数会显示到Jmeter参数列表中*/

publicArguments getDefaultParameters() {

Arguments params= newArguments();

params.addArgument("inNum","");

params.addArgument("resultNum", "");returnparams;

}/*** 性能测试时的线程运行体

* 测试执行的循环体,根据线程数和循环次数的不同可执行多次,类似于Loadrunner中的Action方法*/

publicSampleResult runTest(JavaSamplerContext arg0) {boolean flag = false;//定义一个事务,表示这是事务的起始点,类似于Loadrunner中的lr.start_transaction

results.sampleStart();for (int i = inNum.length();--i >= 0;){if (!Character.isDigit(inNum.charAt(i))){

flag= false;

}else{

flag= true;

}

}for (int j = resultNum.length();--j >= 0;){if (!Character.isDigit(resultNum.charAt(j))){

flag= false;

}else{

flag= true;

}

}//定义一个事务,表示这是事务的结束点,类似于Loadrunner中的lr.end_transaction

results.sampleEnd();if(flag){

Integer num=Integer.parseInt(inNum);

Integer rsNum=Integer.parseInt(resultNum);if (num ==rsNum){

results.setDataEncoding("UTF-8");//因为响应的数据有中文,所以最好先设置编码

results.setResponseData("恭喜你,答对了O(∩_∩)O~\n答案是【"+resultNum+"】");//响应数据,对应结果树,其他response code等可以自己点出来

results.setSuccessful(true);//告诉系统返回正确还是错误

} else if (num >rsNum){

results.setDataEncoding("UTF-8");

results.setResponseData("好像大了点~~~~(>_

results.setSuccessful(false);

}else{

results.setDataEncoding("UTF-8");

results.setResponseData("好像小了点~~~~(>_

results.setSuccessful(false);

}

}else{

results.setDataEncoding("UTF-8");//results.setResponseData("请输入数字:~~~~(>_

results.setSuccessful(false);

}returnresults;

}/*** 测试结束方法,结束测试中的每个线程

* 实际运行时,每个线程仅执行一次,在测试方法运行结束后执行,类似于Loadrunner中的End方法*/

public voidteardownTest(JavaSamplerContext arg0) {

}

}

六、在eclipse中生成jar包:包(右键选择EXPORT)

七、选择jar存储路径,然后将它拷贝到Jmeter的安装目录lib/ext下面;

八、然后就是按照正产的压测就可以了,结果:

以上。

jmeter自定义java_【脚本开发】:在jmeter中使用自定义的java脚本相关推荐

  1. Polyworks脚本开发学习笔记(二二)-调取视角用脚本自动生成报告

    Polyworks脚本开发学习笔记(二二)-调取视角用脚本自动生成报告 Polyworks中,3D场景的视图可用标准视角及等轴侧视角.项目视角等方式调用,也可以用txt格式保存下来调用,如果以脚本的形 ...

  2. JMeter工具:常用协议脚本开发(BeanShell Sampler, Debug Sampler, FTP/Java/JDBC请求, JUnit request, SOAP/XML-RPC)

    目录 1. BeanShell Sampler 1.1 BeanShell Timer:BeanShell定时器 1.2 BeanShell PreProcessor:BeanShell前置处理器 1 ...

  3. 学会Python就能做游戏脚本开发?别天真了!—— 关于游戏脚本的3个质疑

    现如今想从事和游戏相关的工作,例如游戏开发或游戏脚本策划的伙伴越来越多. 很多想从事脚本开发的伙伴有如下3点质疑: 1.学会Python就可以从事游戏脚本的工作吗? 2.脚本开发只需要学习Python ...

  4. php linux脚本文件,Unix/Linux中如何直接执行PHP脚本文件?

    使用Linux系统的服务器都有搭建完整的PHP环境,因此有些用户会用PHP去写一些执行自动化任务的脚本,可是发现每次执行PHP脚本都需要使用php myscript.php的方式,感觉有点麻烦.其实我 ...

  5. Android中自定义View的研究 -- 在XML中引用自定义View

    如果在一直使用SetContentView(new HellwView(this)觉得总是少了一点东西,少了什么了,失去了Android中使用XML定义组件的便携性,这种感觉让人很不爽,呵呵,在这节里 ...

  6. shell脚本和python脚本和go脚本的区别_Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例-Go语言中文社区...

    NodeJS 子进程提供了与系统交互的重要接口,其主要 API 有: 1)标准输入.标准输出及标准错误输出的接口: child.stdin 获取标准输入 child.stdout 获取标准输出 chi ...

  7. 自定义权限 android,如何在Android中使用自定义权限?

    蛊毒传说 我创建了一个测试代码,您可以使用它并测试您的权限.有两个应用程序PermissionTestClient声明权限并使用此权限保护其活动.这是清单文件:<?xml version=&qu ...

  8. Android实现自定义相册,在Android Gallery App中创建自定义相册

    您可以使用这种方式在Gallery应用中创建相册.该名称显示为"app images". String path = Environment.getExternalStorageD ...

  9. 自定义icon,在iconfont.css中引入自定义图标

    现有需求将png图标直接引入iconfont.css中,例如在el-input的icon中直接使用,解决办法如下: 第一步:找到icons中的iconfont.css 第二步:引入图标,iconfon ...

  10. arcgispython脚本开发工具_06-05【求助】利用python脚本语言开发新的Arctoolbox工具

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 下面是一段python代码,要如何才能在Arctoolbox中实现呢? #-*- encoding:UTF-8 -*- #!/usr/bin/env py ...

最新文章

  1. python中的引用、浅拷贝和深拷贝
  2. 案例:文件下载需求:1. 页面显示超链接 2. 点击超链接后弹出下载提示框 3. 完成图片文件下载||中文文件问题
  3. sql server 语句自动补齐
  4. UIScrollView的delegate方法妙用之让UICollectionView滑动到某个你想要的位置
  5. sql-labs page2(21~38) 解题过程记录
  6. 数据库:MySQL、HBase、ElasticSearch三者对比
  7. JAVA之运算符优先级
  8. github高级搜索技巧_百度搜索引擎高级使用技巧
  9. 佳明或已支付勒索金,获得 WastedLocker的解密密钥
  10. for循环 与 while循环
  11. 解决远程主机不能cv问题
  12. 数据科学 IPython 笔记本 一、TensorFlow
  13. matlab版大学物理学,MATLAB可视化大学物理学(第2版)
  14. 【PS】如何把图片变成透明
  15. python用两分钟告诉你,怎样暴力破解隔壁老王的 WiFi 密码
  16. mysql导入数据出现--unknown command '\'
  17. MSPA提取生态源地过程
  18. [技术手册] 浅尝超融合之Nutanix(下)安装篇
  19. oracle+锁+杀不死,oracle kill -9 会话
  20. 1.Nexus 5x 刷机Android8.1 root-《frida安卓逆向协议爬虫》

热门文章

  1. JAVA面向对象程序设计--老男孩IT
  2. Curve对象的GetOffsetCurves的偏移
  3. 平板支撑plank_核心肌肉力量
  4. 操作系统---内存管理
  5. Netfilter的Mangle机制
  6. Java时间日期格式转换Date转String和String转Date
  7. 沉没的蜀山---探索东方神话传说中的泰坦尼克
  8. 私人 数据库 服务器 小型_我应该散列私人数据吗?
  9. 在html中 段落标记p中使用属性,HTML的段落标记中,标注文本以原样显示的是标记 P 答案:错...
  10. 重生玄幻练制超级计算机小说,四本好看过瘾的转世重生类玄幻小说,熬夜也要看,根本停不下来...