Jmeter测试Java请求示例

转自:https://blog.csdn.net/luozhuwang/article/details/51882063


一、核心步骤
1.创建一个Java工程;

2.将JMeter的lib目录下的jar文件添加进此工程的Build Path;
ApacheJMeter_core.jar(必须)、ApacheJMeter_java.jar(必须)、avalon-framework-4.1.4.jar、jorphan.jar、logkit-2.0.jar
后台3个为本地调试需要用到的包文件

3.创建一个类并实现JavaSamplerClient接口或继承AbstractJavaSamplerClient,并重写;

构建待测试类:

[java]  view plain  copy
  1. public class MathTest {  
  2.     public String sayHello()  
  3.     {  
  4.         return "Hello";  
  5.     }  
  6.     public String sayHelloToPerson(String s)  
  7.     {  
  8.         if(s == null || s.equals(""))  
  9.             s = "nobody";  
  10.         return (new StringBuilder()).append("Hello ").append(s).toString();  
  11.     }  
  12.     public int sum(int a,int b)  
  13.     {  
  14.         return a+b;  
  15.     }  
  16.       
  17.     public static void main(String args[]){  
  18.         MathTest math = new MathTest();  
  19.         System.out.println(math.sum(12));  
  20.     }  
  21. }  

public Arguments getDefaultParameters();设置可用参数及的默认值;
public void setupTest(JavaSamplerContext arg0):每个线程测试前执行一次,做一些初始化工作;
public SampleResult runTest(JavaSamplerContext arg0):开始测试,从arg0参数可以获得参数值;
public void teardownTest(JavaSamplerContext arg0):测试结束时调用;

[java]  view plain  copy
  1. import org.apache.jmeter.config.Arguments;  
  2. import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;  
  3. import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;  
  4. import org.apache.jmeter.samplers.SampleResult;  
  5. import com.huize.common.MathTest;  
  6.   
  7.   
  8. public class JavaTest extends AbstractJavaSamplerClient {  
  9.     private MathTest test=null;  
  10.     private String a;  
  11.     <span style="white-space:pre">    </span>private String b;  
  12.     <span style="white-space:pre">    </span>private String resultData;  
  13.    <span style="white-space:pre"> </span>private static long start = 0;  
  14.     <span style="white-space:pre">    </span>private static long end = 0;  
  15.       
  16.     // 这个方法是用来自定义java方法入参的。  
  17.     // params.addArgument("num1","");表示入参名字叫num1,默认值为空。  
  18.     public Arguments getDefaultParameters() {  
  19.         Arguments params = new Arguments();  
  20.         params.addArgument("num1""");  
  21.         params.addArgument("num2""");  
  22.         return params;  
  23.     }  
  24.   //每个线程测试前执行一次,做一些初始化工作;  
  25.     public void setupTest(JavaSamplerContext arg0) {  
  26.         test = new MathTest();  
  27.          a = arg0.getParameter("num1");  
  28.          b = arg0.getParameter("num2");  
  29.         start = System.currentTimeMillis();  
  30.     }  
  31.       
  32.   //开始测试,从arg0参数可以获得参数值;  
  33.     public SampleResult runTest(JavaSamplerContext arg0) {         
  34.         SampleResult sr = new SampleResult();  
  35.         sr.setSamplerData("请求参数num1:"+a+"\n请求参数num2:"+b);  
  36.   
  37.         try {  
  38.             sr.sampleStart();// jmeter 开始统计响应时间标记  
  39.             // 通过下面的操作就可以将被测方法的响应输出到Jmeter的察看结果树中的响应数据里面了。  
  40.             resultData = String.valueOf(test.sum(Integer.parseInt(a), Integer.parseInt(b)));  
  41.             if (resultData != null && resultData.length() > 0) {  
  42.                 sr.setResponseData("结果是:"+resultData, null);  
  43.                 sr.setDataType(SampleResult.TEXT);  
  44.             }  
  45.             Thread.sleep(10);  
  46. //             System.out.println(resultData);  
  47.             sr.setSuccessful(true);  
  48.         } catch (Throwable e) {  
  49.             sr.setSuccessful(false);  
  50.             e.printStackTrace();  
  51.         } finally {  
  52.             sr.sampleEnd();// jmeter 结束统计响应时间标记  
  53.         }  
  54.         return sr;  
  55.     }  
  56.   
  57.   
  58.     //测试结束时调用;  
  59.     public void teardownTest(JavaSamplerContext arg0) {  
  60.         end = System.currentTimeMillis();  
  61.         // 总体耗时  
  62.         System.err.println("cost time:" + (end - start) + "毫秒");  
  63.     }  
  64.   
  65.     /* 
  66.     public static void main(String[] args) {  
  67.         Arguments params = new Arguments();  
  68.         params.addArgument("num1", "1");//设置参数,并赋予默认值1  
  69.         params.addArgument("num2", "2");//设置参数,并赋予默认值2 
  70.         JavaSamplerContext arg0 = new JavaSamplerContext(params);  
  71.         JavaTest test = new JavaTest();  
  72.         test.setupTest(arg0);  
  73.         test.runTest(arg0); 
  74.         test.teardownTest(arg0);  
  75.     } 
  76. */  
  77. }  

4.Export为Runnable Jar File;
5.将此jar包放入JMETER_HOME\lib\ext目录;
6.以管理员身份打开JMeter;
7.创建线程组、Java Request、查看结果树,进行测试;



参考文献:http://www.cnblogs.com/yangxia-test/p/4019541.html


猜你喜欢

转载自blog.csdn.net/qq_34218221/article/details/80757162