第一写测试脚本(其中有参照其他博主),记录下:
- 将ApacheJMeter_core.jar和ApacheJMeter_java.jar 导入Eclipse以及必要的mysql驱动jar包
- 写自己的测试脚本,新建类继承AbstractJavaSamplerClient,重写 public Arguments getDefaultParameters( ),public void setupTest(JavaSamplerContext jsc),public SampleResult runTest(JavaSamplerContext arg0),public void teardownTest(JavaSamplerContext arg0)四个方法
- 从Eclipse中导出jar包,放到\lib\ext路径下
- 打开jmeter,在Sampler —Java请求 中就能看到自定义的脚本了
直接粘上脚本:
package com.zfsoft.javaSampler;
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;
import com.mysql.jdbc.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DbSelectTest extends AbstractJavaSamplerClient{
private static String sql;
private static String dburl;
private static String dbuser;
private static String dbpassword;
private int actualnum;
private String expectnum;
private SampleResult sr ;
//设置传入的默认参数
public Arguments getDefaultParameters( ){
Arguments param = new Arguments();
param.addArgument("sql", "");
param.addArgument("dburl","jdbc:mysql://localhost:3306/test? useUnicode=true&characterEncoding=utf8&useSSL=false");
param.addArgument("dbuser","root");
param.addArgument("dbpassword","123456");
param.addArgument("expectnum","");
return param;
}
//初始化
public void setupTest(JavaSamplerContext jsc){
sr = new SampleResult();
sql = jsc.getParameter("sql","");
dburl = jsc.getParameter("dburl","");
dbuser = jsc.getParameter("dbuser","");
dbpassword = jsc.getParameter("dbpassword","");
expectnum = jsc.getParameter("expectnum", "");
sr.setSamplerData(sql);
sr.setSamplerData(dburl);
sr.setSamplerData(dbuser);
sr.setSamplerData(dbpassword);
sr.setSamplerData(expectnum);
}
@SuppressWarnings("deprecation")
public SampleResult runTest(JavaSamplerContext arg0){
sr.sampleStart(); //事务开始
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn= DriverManager.getConnection(dburl, dbuser, dbpassword);
Statement stm = (Statement) conn.createStatement();
ResultSet rs = stm.executeQuery(sql);
StringBuffer strbf = new StringBuffer();
sr.setDataEncoding("UTF-8");
while(rs.next()){
actualnum = rs.getRow();
String str1 = rs.getString(1);
String str2 = rs.getString(2);
String str3 = rs.getString(3);
strbf.append(str1+str2+str3);
}
sr.setResponseData(strbf.toString());
rs.close();
conn.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
sr.sampleEnd(); //事务结束
if(actualnum==Integer.parseInt(expectnum)){
sr.setSuccessful(true);
}else{
sr.setSuccessful(false);
}
return sr;
}
public void teardownTest(JavaSamplerContext arg0){
}
}