利用Jmeter發(fā)送Java請(qǐng)求的實(shí)戰(zhàn)記錄
前言
第一次遇到了需要用Jmeter發(fā)送Java請(qǐng)求的情況,也是網(wǎng)上查過很多資料才成功。做一個(gè)記錄,做一個(gè)分享。
Jmeter去發(fā)送Java請(qǐng)求,就是需要你有測(cè)試類的jar包放到Jmeter的lib/ext目錄下,新建Java請(qǐng)求才可以。這個(gè)我們用到的測(cè)試類,開發(fā)給到以后我們需要自己去做一下調(diào)整,使用Eclipse工具來寫。
實(shí)現(xiàn)過程
1.首先創(chuàng)建好工程,用到兩個(gè)Jmeter包-ApacheJMeter_java.jar、ApacheJMeter_core.jar,直接從Jmeter復(fù)制項(xiàng)目里,并且右鍵Buid Path就可以了。

2.測(cè)試類需要繼承AbstractJavaSamplerClient,點(diǎn)擊報(bào)錯(cuò)進(jìn)行導(dǎo)包和添加實(shí)現(xiàn)方法。runTest方法就是核心方法,所實(shí)現(xiàn)的代碼邏輯在這里。

3.寫一個(gè)簡(jiǎn)單的demo,兩個(gè)數(shù)相加為sum結(jié)果。初始化一個(gè)SampleResult,然后sr.sampleStart()作為Jmeter開始統(tǒng)計(jì)響應(yīng)時(shí)間標(biāo)識(shí),相加過程為正式的邏輯代碼,把返回結(jié)果放入sr并設(shè)置字符集,sr.setSuccessful()設(shè)置成功與否,最后加上sr.sampleEnd()結(jié)束統(tǒng)計(jì)響應(yīng)的標(biāo)識(shí),返回sr即可。

4.導(dǎo)出jar包,放到Jmeter-lib/ext目錄,添加一個(gè)Java請(qǐng)求,選擇我們test下的TestSum就可以了,測(cè)試結(jié)果如下:



5.簡(jiǎn)單的測(cè)試寫完之后,我們?cè)龠M(jìn)行改造代碼,傳入的int參數(shù)不能是固定的,需要我們?cè)贘meter中傳入不同的參數(shù)進(jìn)行測(cè)試,首先把剛才定義好的參數(shù)(8和6)去掉,在getDefaultParameters方法中去初始化一個(gè)參數(shù)集,把入?yún)⒎胚M(jìn)params;setupTest方法做一些Jmeter測(cè)試前的初始化工作,可以在這里獲取我們輸入的參數(shù)。重新打包測(cè)試,我們就可以自定義兩個(gè)入?yún)⒌闹盗恕?/p>




6.到這里應(yīng)該都大概知道怎么做了,附上本次代碼,可以作為一個(gè)模板,直接在上邊進(jìn)行修改即可。
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 TestSum extends AbstractJavaSamplerClient {
private String number1;
private String number2;
@Override
public Arguments getDefaultParameters() {
Arguments params = new Arguments();//初始化一個(gè)參數(shù)集
params.addArgument("num1", "");//把入?yún)⒎湃雙arams
params.addArgument("num2", "");
return params;
}
@Override
public void setupTest(JavaSamplerContext arg0) {
number1 = arg0.getParameter("num1");//獲取入?yún)?賦值給變量
number2 = arg0.getParameter("num2");
}
@Override
public SampleResult runTest(JavaSamplerContext arg0) {
//int number1 = 8;// 定義一個(gè)int參數(shù)8
//int number2 = 6;// 定義一個(gè)int參數(shù)6
SampleResult sr = new SampleResult();// 初始化一個(gè)SampleResult
sr.setSamplerData("請(qǐng)求參數(shù)num1:" + number1 + "\n請(qǐng)求參數(shù)num2:" + number2);// 參數(shù)放進(jìn)sr
try {
sr.sampleStart(); // jmeter 開始統(tǒng)計(jì)響應(yīng)時(shí)間標(biāo)識(shí)
int sum = Integer.parseInt(number1)+Integer.parseInt(number2);// 定義sum等于兩個(gè)參數(shù)相加,正式的邏輯代碼
sr.setResponseData("兩個(gè)數(shù)相加的結(jié)果是:" + sum, "utf-8");// 結(jié)果放入sr,并設(shè)置字符集
sr.setDataType(SampleResult.TEXT);
sr.setSuccessful(true); // 設(shè)置響應(yīng)執(zhí)行成功
} catch (Throwable e) {
sr.setSuccessful(false);// 有異常,執(zhí)行失敗
e.printStackTrace();
} finally {
sr.sampleEnd(); // jmeter 結(jié)束統(tǒng)計(jì)響應(yīng)時(shí)間標(biāo)識(shí)
}
return sr;
}
}
真實(shí)的項(xiàng)目往往是復(fù)雜的,查看結(jié)果樹自定義返回什么內(nèi)容,如有定義好的返回結(jié)果resultData,sr.setResponseData(resultData, "字符集")即可。
總結(jié)
到此這篇關(guān)于利用Jmeter發(fā)送Java請(qǐng)求的文章就介紹到這了,更多相關(guān)Jmeter發(fā)送Java請(qǐng)求內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java簡(jiǎn)單實(shí)現(xiàn)UDP和TCP的示例
下面小編就為大家?guī)硪黄狫ava簡(jiǎn)單實(shí)現(xiàn)UDP和TCP的示例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-11-11
Java基礎(chǔ)知識(shí)之ByteArrayInputStream流的使用
這篇文章主要介紹了Java基礎(chǔ)知識(shí)之ByteArrayInputStream流的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
java 中List按照date排序的實(shí)現(xiàn)
這篇文章主要介紹了java 中List按照date排序的實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下2017-06-06
Java實(shí)現(xiàn)二維數(shù)組和稀疏數(shù)組之間的轉(zhuǎn)換
本文主要介紹了Java 二維數(shù)組和稀疏數(shù)組轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-06-06
如何使用CountDownLatch同步j(luò)ava多線程
這篇文章主要介紹了如何使用CountDownLatch同步j(luò)ava多線程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
關(guān)于Mybatis中foreach遍歷Map的實(shí)現(xiàn)示例
這篇文章主要介紹了關(guān)于Mybatis中foreach遍歷Map的實(shí)現(xiàn)示例,MyBatis?是一款優(yōu)秀的半自動(dòng)的ORM持久層框架,它支持自定義?SQL、存儲(chǔ)過程以及高級(jí)映射,需要的朋友可以參考下2023-05-05
Java基于HttpClient實(shí)現(xiàn)RPC的示例
HttpClient可以實(shí)現(xiàn)使用Java代碼完成標(biāo)準(zhǔn)HTTP請(qǐng)求及響應(yīng)。本文主要介紹了Java基于HttpClient實(shí)現(xiàn)RPC,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10

