用R生成的随机不知道为什么,总是不是很随机,可能是因为用load()命令的缘故吧~暂时也没时间理会忒多。
但是java吧~又懒得每次都打开Eclipse,仅仅是为了去运行一小段java代码来生成几个数字,患有严重强迫症的我心理严重接受不了。
其实也可以通过下面的批处理来达到同样的效果。
@echo off
:1
javac "D:\Java\Test.java"
cd "D:\Java"
java "Test"
pause
goto 1
好吧~我就是找一个蹩脚的借口试一下jmeter运行java脚本。
----------------------------------------闲话少说,言归正传吧~------------------------------------
1.先创建一个java项目jmeterFromJava;
2.在项目中创建一个lib的文件夹;
3.在Jmeter的安装目录lib/ext中拷贝“ApacheJMeter_core.jar”和“ApacheJMeter_java.jar”这两个文件到项目的lib文件夹下面;
4.Eclipse中把lib文件夹下面的两个JAR文件引入项目中;
5.项目中创建一个ConnectJmeter类,继承自AbstractJavaSamplerClient类;
6.MobileRandomNum类;
7.eclipse中将项目打包成jar
方法如下:
- 选中项目
- 然后右击弹出选项列表
- 依次选择Export---Java---jar file---next---browser(选择存放路径)---next---next---browser---finish
8.把生成的"rmobileno.jar"文件拷贝到Jmeter的安装目录lib/ext下.
9.运行Jmeter,添加一个线程组,然后在该线程组下面添加一个Java请求(在Sampler中),在Java请求的类名称的下拉框中选择刚创建的类"rmobileno"。在线程组中再添加一个监听器(查看结果树),运行就ok.
源码如下:
AbstractJavaSamplerClient类
package jmeterFromJava;
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;
/**
* @author 苏宝伢 E-mail:by.su@qq.com
* @version 创建时间: 2017年6月21日 下午3:11:35
*/
public class ConnectJmeter extends AbstractJavaSamplerClient {
SampleResult result;
// 初始化方法,实际运行时每个线程仅执行一次,在测试方法运行前执行,类似于LoadRunner中的init方法
public void setupTest(JavaSamplerContext arg0) {
result = new SampleResult();
}
// 设置传入的参数,可以设置多个,已设置的参数会显示到Jmeter的参数列表中
public Arguments getDefaultParameters() {
Arguments params = new Arguments();
// params.addArgument("testStr", ""); // 定义一个参数,显示到Jmeter的参数列表中,第一个参数为参数默认的显示名称,第二个参数为默认值
return params;
}
@Override
public SampleResult runTest(JavaSamplerContext arg0) {
result.sampleStart(); // 定义一个事务,表示这是事务的起始点,类似于LoadRunner的lr.start_transaction
String str = MobileRandomNum.startMobileNo() + MobileRandomNum.endMobileNo();
this.result.setResponseData(str);
this.result.setSuccessful(true);
result.sampleEnd(); // 定义一个事务,表示这是事务的结束点,类似于LoadRunner的lr.end_transaction
return result;
}
// 结束方法,实际运行时每个线程仅执行一次,在测试方法运行结束后执行,类似于LoadRunner中的end方法
public void teardownTest(JavaSamplerContext arg0) {
}
}
MobileRandomNum类
package jmeterFromJava;
import java.util.ArrayList;
import java.util.Random;
/**
* @author 苏宝伢 E-mail:by.su@qq.com
* @version 创建时间: 2017年6月21日 下午4:14:57
*/
public class MobileRandomNum {
public static int startMobileNo(){
int[] mobileStart =
{139,138,137,136,135,134,159,158,157,150,151,152,188,130,131,132,156,155,133,153,189,180,177,176};
Random r = new Random();
ArrayList<Integer> mobileList = new ArrayList<>();
for(int i = 0;i<mobileStart.length;i++){
mobileList.add(mobileStart[i]);
}
return mobileList.get(r.nextInt(mobileList.size()));
}
public static String endMobileNo(){
Random r = new Random();
String temp = "";
for(int i=0;i<8;i++){
temp += r.nextInt(10);
}
return temp;
}
}