前言
第一次遇到了需要用Jmeter發送Java請求的情況,也是網上查過很多資料才成功。做一個記錄,做一個分享。
Jmeter去發送Java請求,就是需要你有測試類的jar包放到Jmeter的lib/ext目錄下,新建Java請求才可以。這個我們用到的測試類,開發給到以后我們需要自己去做一下調整,使用Eclipse工具來寫。
實現過程
1.首先創建好工程,用到兩個Jmeter包-ApacheJMeter_java.jar、ApacheJMeter_core.jar,直接從Jmeter復制項目里,并且右鍵Buid Path就可以了。
2.測試類需要繼承AbstractJavaSamplerClient,點擊報錯進行導包和添加實現方法。runTest方法就是核心方法,所實現的代碼邏輯在這里。
3.寫一個簡單的demo,兩個數相加為sum結果。初始化一個SampleResult,然后sr.sampleStart()作為Jmeter開始統計響應時間標識,相加過程為正式的邏輯代碼,把返回結果放入sr并設置字符集,sr.setSuccessful()設置成功與否,最后加上sr.sampleEnd()結束統計響應的標識,返回sr即可。
4.導出jar包,放到Jmeter-lib/ext目錄,添加一個Java請求,選擇我們test下的TestSum就可以了,測試結果如下:
5.簡單的測試寫完之后,我們再進行改造代碼,傳入的int參數不能是固定的,需要我們在Jmeter中傳入不同的參數進行測試,首先把剛才定義好的參數(8和6)去掉,在getDefaultParameters方法中去初始化一個參數集,把入參放進params;setupTest方法做一些Jmeter測試前的初始化工作,可以在這里獲取我們輸入的參數。重新打包測試,我們就可以自定義兩個入參的值了。
6.到這里應該都大概知道怎么做了,附上本次代碼,可以作為一個模板,直接在上邊進行修改即可。
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();//初始化一個參數集 params.addArgument("num1", "");//把入參放入params params.addArgument("num2", ""); return params; } @Override public void setupTest(JavaSamplerContext arg0) { number1 = arg0.getParameter("num1");//獲取入參,賦值給變量 number2 = arg0.getParameter("num2"); } @Override public SampleResult runTest(JavaSamplerContext arg0) { //int number1 = 8;// 定義一個int參數8 //int number2 = 6;// 定義一個int參數6 SampleResult sr = new SampleResult();// 初始化一個SampleResult sr.setSamplerData("請求參數num1:" + number1 + "\n請求參數num2:" + number2);// 參數放進sr try { sr.sampleStart(); // jmeter 開始統計響應時間標識 int sum = Integer.parseInt(number1)+Integer.parseInt(number2);// 定義sum等于兩個參數相加,正式的邏輯代碼 sr.setResponseData("兩個數相加的結果是:" + sum, "utf-8");// 結果放入sr,并設置字符集 sr.setDataType(SampleResult.TEXT); sr.setSuccessful(true); // 設置響應執行成功 } catch (Throwable e) { sr.setSuccessful(false);// 有異常,執行失敗 e.printStackTrace(); } finally { sr.sampleEnd(); // jmeter 結束統計響應時間標識 } return sr; } }
真實的項目往往是復雜的,查看結果樹自定義返回什么內容,如有定義好的返回結果resultData,sr.setResponseData(resultData, "字符集")即可。
總結
到此這篇關于利用Jmeter發送Java請求的文章就介紹到這了,更多相關Jmeter發送Java請求內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/weixin_42561872/article/details/120131457