IDEA新建maven項目,使用java開發自定義jmeter的請求。html
本次開發使用的代碼,會百度雲分享給你們。java
Ideaapache |
2017.02json |
Jmeterapp |
5.1.1dom |
pom.xml文件中導入依賴。maven
<dependencies> <!-- https://mvnrepository.com/artifact/org.apache.jmeter/ApacheJMeter_functions --> <dependency> <groupId>org.apache.jmeter</groupId> <artifactId>ApacheJMeter_functions</artifactId> <version>5.1.1</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.jmeter/ApacheJMeter_core --> <dependency> <groupId>org.apache.jmeter</groupId> <artifactId>ApacheJMeter_core</artifactId> <version>5.1.1</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.jmeter/ApacheJMeter_java --> <dependency> <groupId>org.apache.jmeter</groupId> <artifactId>ApacheJMeter_java</artifactId> <version>5.1.1</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient --> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.5</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies>
打開jmeter,添加javarequest以下圖所示:ide
默認只有兩個class。post
package com.jmeter.functions; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.protocol.java.sampler.JavaSamplerClient; import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext; import org.apache.jmeter.samplers.SampleResult; public class CustemRequest implements JavaSamplerClient { @Override public void setupTest(JavaSamplerContext javaSamplerContext) { } @Override public SampleResult runTest(JavaSamplerContext javaSamplerContext) { return null; } @Override public void teardownTest(JavaSamplerContext javaSamplerContext) { } @Override public Arguments getDefaultParameters() { return null; } }
咱們能夠看到,具體會實現4個方法。ui
啓動上一節實現的應用。localhost:8086
具體實現代碼以下:
package com.jmeter.functions; import com.alibaba.fastjson.JSONObject; import org.apache.http.HttpEntity; import org.apache.http.NameValuePair; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.utils.URIBuilder; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicHeader; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.protocol.java.sampler.JavaSamplerClient; import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext; import org.apache.jmeter.samplers.SampleResult; import java.net.URISyntaxException; import java.util.LinkedList; import java.util.List; import java.util.Random; public class CustemRequest implements JavaSamplerClient { //定義顯示請求地址的變量名 private static final String REQUEST_RUL = "URL"; //定義默認請求的URL地址 private static final String DEFAULT_URL = "http://localhost:8086/user/get"; //用戶輸入的URL private String inputUrl; //用來保存http請求的響應結果,並把結果放到jmeter的查看結果樹裏面 private String ResponseResult; //返回成功的狀態碼 private static final int SUCCESS_CODE = 200; //如下方法,打印輸出的目的就是檢驗此4個方法的執行順序,你們執行的時候能夠後臺結果詳細查看 @Override public void setupTest(JavaSamplerContext javaSamplerContext) { System.out.println("******setupTest******"); inputUrl = javaSamplerContext.getParameter(REQUEST_RUL,DEFAULT_URL); System.out.println("用戶默認輸出的URL地址------>:" + inputUrl); } /** * 真正執行的方法 * @param javaSamplerContext * @return */ @Override public SampleResult runTest(JavaSamplerContext javaSamplerContext) { SampleResult sampleResult = new SampleResult(); Object[] param = new Object[]{"id"}; Object[] value = new Object[]{26}; List<NameValuePair> nameValuePairs = getParam(param, value); /** * 標記一個事務的開始 */ sampleResult.sampleStart(); try { ResponseResult = (String) sentGetRequest(inputUrl, nameValuePairs); } catch (Exception e) { e.printStackTrace(); } sampleResult.setSampleLabel("自定義本地的請求訪問"); sampleResult.setSuccessful(true); //告訴查看結果樹是否成功 sampleResult.setResponseData(ResponseResult,"utf-8"); sampleResult.setDataType(SampleResult.TEXT); return