jmeter性能测试-Java请求
1.maven引入
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<jmeter-version>3.1</jmeter-version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_core</artifactId>
<version>${jmeter-version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_java</artifactId>
<version>${jmeter-version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.2</version>
</dependency>
</dependencies>
2.Java代码
package jmeter;
import org.apache.http.HttpEntity;
import org.apache.http.StatusLine;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
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 java.io.IOException;
public class JmeterSamplerTest extends AbstractJavaSamplerClient {
private SampleResult result;
private String url;
public static void main(String[] args) {
Arguments arguments = new Arguments();
arguments.addArgument("url","http://www.baidu.com");
JavaSamplerContext arg0 = new JavaSamplerContext(arguments);
JmeterSamplerTest test = new JmeterSamplerTest();
test.setupTest(arg0);
test.runTest(arg0);
}
/**
* 这个方法用来控制显示在GUI页面的属性,由用户来进行设置。
* 此方法不用调用,是一个与生命周期相关的方法,类加载则运行。
* @return
*/
public Arguments getDefaultParameters() {
Arguments arguments = new Arguments();
arguments.addArgument("url","");
return arguments;
}
/**
* 做些初始化的工作,每个线程只执行一次
* @param context
*/
public void setupTest(JavaSamplerContext context) {
result = new SampleResult();
}
/**
* 具体的测试执行工作,每个并发每次循环都将执行一次
* @param javaSamplerContext
* @return
*/
public SampleResult runTest(JavaSamplerContext javaSamplerContext) {
//获取用户输入的url
url = javaSamplerContext.getParameter("url");
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpGet request = new HttpGet(url);
result.sampleStart();
CloseableHttpResponse closeableHttpResponse = null;
try {
closeableHttpResponse = httpclient.execute(request);
StatusLine statusLine = closeableHttpResponse.getStatusLine();
HttpEntity entity = closeableHttpResponse.getEntity();
//将请求结果设置在响应内容中,将在结果树展示
String str = EntityUtils.toString(entity,"UTF-8");
result.setResponseData(str,"UTF-8");
System.out.println(str);
if (statusLine.getStatusCode()==200){
//请求状态码为200,将请求设置为成功
result.setSuccessful(true);
} else {
result.setSuccessful(false);
}
closeableHttpResponse.close();
httpclient.close();
} catch (IOException e) {
e.printStackTrace();
}
result.sampleEnd();
return result;
}
//结束方法,实际运行时每个线程仅执行一次,在测试方法运行结束后执行,类似于LoadRunner中的end方法
public void teardownTest(JavaSamplerContext arg0) {
}
}
3.将代码打成jar包
先clean,然后再package