一、使用Eclipse进行项目编写

1.使用eclipse,新建项目名字为:TestNumber,包名为:test,类名为:TestNum

2.在JMeter的安装目下下lib/ext中copy2个jar包到eclipse中(ApacheJMeter_core.jar 和 ApacheJMeter_java.jar)

3.TestNum类继承AbstractJavaSamplerClient,该AbstractJavaSamplerClient存在与ApacheJMeter_java.jar中

4.TestNum extends AbstractJavaSamplerClient需要实现4个方法:setupTest()、getDefaultParameters()、runTest()、teardownTest()

二、具体代码实现

package test;

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 TestNum extends AbstractJavaSamplerClient{ private SampleResult results;
private String inNum; //输入的数字
private String resultNum; //需要匹配的数字
/**
* 初始化方法,用于初始化性能测试时的每个线程
*/
@Override
public void setupTest(JavaSamplerContext jsc) { results = new SampleResult();
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参数列表中
*/
@Override
public Arguments getDefaultParameters() { Arguments params = new Arguments();
params.addArgument("inNum","");
params.addArgument("resultNum","66");
return params;
} /**
* 性能测试时的线程运行体
* 测试执行的循环体,根据线程数和循环次数的不同可执行多次
*/
@Override
public SampleResult 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("好像大了点~~~~(>_<)~~~~ \n您输入的是【"+inNum+"】");
results.setSuccessful(false);
}else {
results.setDataEncoding("UTF-8");
results.setResponseData("好像小了点~~~~(>_<)~~~~ \n您输入的是【"+inNum+"】");
results.setSuccessful(false);
} }else{
results.setDataEncoding("UTF-8");
results.setResponseData("请输入数字:~~~~(>_<)~~~~ \n您输入的inNum是【"+inNum+"】,resultNum是【"+resultNum+"】");
results.setSuccessful(false);
} return results;
} /**
* 测试结束方法,结束测试中的每个线程
*/
@Override
public void teardownTest(JavaSamplerContext context) {
}
}

  

三、JMeter运行压测

1.在eclipse中把项目导出为jar包,其jar名为:TestNumber.jar,将jar包拷贝到Jmeter的安装目录lib/ext下面

2.运行jmeter,添加线程组==java请求==查看结果树==聚合报告

3.设置并发用户数为20,查看其结果树

JMeter代码小Demo(Java)的更多相关文章

  1. java线程间通信:一个小Demo完全搞懂

    版权声明:本文出自汪磊的博客,转载请务必注明出处. Java线程系列文章只是自己知识的总结梳理,都是最基础的玩意,已经掌握熟练的可以绕过. 一.从一个小Demo说起 上篇我们聊到了Java多线程的同步 ...

  2. spark集群配置以及java操作spark小demo

    spark 安装 配置 使用java来操作spark spark 安装 tar -zxvf spark-2.4.0-bin-hadoop2.7.tgz rm spark-2.4.0-bin-hadoo ...

  3. 聊聊UDP、TCP和实现一个简单的JAVA UDP小Demo

    最近真的比较忙,很久就想写了,可是一直苦于写点什么,今天脑袋灵光一闪,觉得自己再UDP方面还有些不了解的地方,所以要给自己扫盲. 好了,咱们进入今天的主题,先列一下提纲: 1. UDP是什么,UDP适 ...

  4. 【Java】Jsoup爬虫,一个简单获取京东商品信息的小Demo

    简单记录 - Jsoup爬虫入门实战 数据问题?数据库获取,消息队列中获取中,都可以成为数据源,爬虫! 爬取数据:(获取请求返回的页面信息,筛选出我们想要的数据就可以了!) 我们经常需要分析HTML网 ...

  5. Java - JavaMail - 利用 JavaMail 发邮件的 小demo

    1. 概述 面试的时候, 被问到一些乱七八糟的运维知识 虽然我不是干运维的, 但是最后却告诉我专业知识深度不够, 感觉很难受 又回到了一个烦人的问题 工作没有深度的情况下, 你该如何的提升自己, 并且 ...

  6. 《算法导论》第二章demo代码实现(Java版)

    <算法导论>第二章demo代码实现(Java版) 前言 表示晚上心里有些不宁静,所以就写一篇博客,来缓缓.囧 拜读<算法导论>这样的神作,当然要做一些练习啦.除了练习题与思考题 ...

  7. 「小程序JAVA实战」 小程序手写属于自己的第一个demo(六)

    转自:https://idig8.com/2018/08/09/xiaochengxu-chuji-06/ 自己尝试的写一个小demo,用到自定义样式,自定义底部导航,页面之间的跳转等小功能.官方文档 ...

  8. Android -- 自定义View小Demo,动态画圆(一)

    1,转载:(http://blog.csdn.NET/lmj623565791/article/details/24500107),现在如下图的效果: 由上面的效果图可以看到其实是一个在一个圆上换不同 ...

  9. Redis的入门Demo(java)

    java代码部分参考了:http://www.runoob.com/redis/redis-java.html 在java中使用Redis,需要引入Redis驱动,就是jedis-2.1.0.jar, ...

随机推荐

  1. leetcode 559. Maximum Depth of N-ary Tree

    Given a n-ary tree, find its maximum depth. The maximum depth is the number of nodes along the longe ...

  2. [Android]Adb connection Error:远程主机强迫关闭了一个现有的连接

    目前,针对Android手机研发的刷机软件和手机助手软件,都会调用Google开发的adb工具与手机进行通信. 有的刷机软件或者手机助手软件,在系统里会常驻一个服务,独占adb的端口(5037),这样 ...

  3. 【51nod-1289】大鱼吃小鱼(思维)

    这道题我想的方法是用栈,每次去出栈顶两元素,比较是否相对,相对的话合并后压入栈.类似括号匹配. #include <bits/stdc++.h> using namespace std; ...

  4. 严重:Error configuring application listener of class org.springframework.web.util.IntrospectorCleanupListener

    mave项目换了一个新的工作空间时出现的问题 原因: 其实是你的jar文件没有同步发布到自己项目的lib目录中(如果你是用Maven进行构建的话) 可以试试 下面的办法 解决方案: 项目点击右键 点击 ...

  5. mifi随身wifi选购

    一款优秀的随身wifi不光要信号好,更要电量足 ,网速快.影响这个三个问题的主要因素就是cpu.so咱们从cpu的角度来分析下mifi 机器型号(cpu型号) TP 961 52000 (MDM962 ...

  6. New Concept English three(16)

    35w/m 43 Mary and her husband Dimitri lived in the tiny village of Perachora in southern Greece. One ...

  7. C语言 运算符详细介绍及示例代码

    C 运算符 运算符是一种告诉编译器执行特定的数学或逻辑操作的符号.C 语言内置了丰富的运算符,并提供了以下类型的运算符: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 杂项运算符 本章将逐 ...

  8. JS跨页面或跨JS文件对变量赋值

    JS跨页面或跨JS文件对变量赋值,这是很小的一个问题. 但问题虽小,却总觉得有点不够自然,不爽. 为什么呢?访问一个页面上的变量不是什么难事,比如用parent.变量名,或者windows名.变量名, ...

  9. 神奇的 ViewDragHelper,让你轻松定制拥有拖拽能力的 ViewGroup

    为了吸引大家的注意力,先给大家看一张动图: 相信这种效果大家都见过吧?我第一次见到这样的效果时,心里也痒痒的,急于想实现这种功能,后来因为拖延症的问题,就一直没有去弄这件事.现在这段时间,工作比较轻闲 ...

  10. YXY的测试流程

    不同的公司测试流程都会不一样