1.創(chuàng)建一個Java工程膜楷;
2.將JMeter的lib目錄下的jar文件添加進此工程的Build Path绿贞;需要引入三個包ApacheJMeter_core.jar婿脸,ApacheJMeter_java.jar讯屈,logkit-2.0.jar
3.創(chuàng)建一個類并實現(xiàn)JavaSamplerClient接口或繼承AbstractJavaSamplerClient亡嫌,并重寫:
public Arguments getDefaultParameters():設置可用參數(shù)及的默認值;
public void setupTest(JavaSamplerContext arg0):每個線程測試前執(zhí)行一次击孩,做一些初始化工作迫悠;
public SampleResult runTest(JavaSamplerContext arg0):開始測試,從arg0參數(shù)可以獲得參數(shù)值巩梢;
public void teardownTest(JavaSamplerContext arg0):測試結(jié)束時調(diào)用创泄;
getDefaultParameters() -->setupTest(JavaSamplerContext context) -->runTest(JavaSamplerContext context) -->teardownTest(JavaSamplerContextcontext)
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 org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class JavaTest extends AbstractJavaSamplerClient {
private static final Logger log = LoggerFactory.getLogger(JavaTest.class);
private String num1;
private String num2;
/**
* 這個方法是用來自定義java方法入?yún)⒌?params.addArgument("num1","");表示入?yún)⒚纸衝um1,默認值為空且改。
*
* @return
*/
@Override
public Arguments getDefaultParameters() {
Arguments params = new Arguments();
params.addArgument("num1", "2");
params.addArgument("num2", "3");
return params;
}
/**
* 每個線程測試前執(zhí)行一次验烧,做一些初始化工作 獲取輸入的參數(shù),賦值給變量,參數(shù)也可以在下面的runTest方法中獲取,這里是為了展示該方法的作用
*
* @param arg0
*/
@Override
public void setupTest(JavaSamplerContext arg0) {
num1 = arg0.getParameter("num1");
num2 = arg0.getParameter("num2");
}
/**
* 真正執(zhí)行邏輯的方法
*
* @param arg0
* @return
*/
@Override
public SampleResult runTest(JavaSamplerContext arg0) {
SampleResult sr = new SampleResult();
sr.setSamplerData("請求參數(shù)num1:" + num1 + "\n請求參數(shù)num2:" + num2);
try {
// jmeter 開始統(tǒng)計響應時間標記
sr.sampleStart();
int sum = sumfun(Integer.parseInt(num1),Integer.parseInt(num2));
// 通過下面的操作就可以將被測方法的響應輸出到Jmeter的察看結(jié)果樹中的響應數(shù)據(jù)里面了。
sr.setResponseData("結(jié)果是:" + sum, "utf-8");
System.out.println(sum);
// 設置響應執(zhí)行成功
sr.setSuccessful(true);
} catch (Throwable e) {
// 有異常,執(zhí)行失敗
sr.setSuccessful(false);
e.printStackTrace();
} finally {
// jmeter 結(jié)束統(tǒng)計響應時間標記
sr.sampleEnd();
}
return sr;
}
/**
* 測試結(jié)束后調(diào)用
*
* @param arg0
*/
@Override
public void teardownTest(JavaSamplerContext arg0) {
}
/**
* main方法測試程序是否可用,打包時 注釋掉
*
* @param args
*/
public static void main(String[] args) {
Arguments params = new Arguments();
// 設置參數(shù)又跛,并賦予默認值1
params.addArgument("num1", "1");
// 設置參數(shù),并賦予默認值2
params.addArgument("num2", "2");
JavaSamplerContext arg0 = new JavaSamplerContext(params);
JavaTest test = new JavaTest();
test.setupTest(arg0);
test.runTest(arg0);
test.teardownTest(arg0);
}
public int sumfun(int n,int m) {
int a=m + n;
return a;
}
}
4.Export為Runnable Jar File若治;
5.將此jar包放入JMETER_HOMElibext目錄慨蓝;
6.創(chuàng)建線程組感混、Java Request、結(jié)果樹礼烈,進行測試弧满;