Java请求:就是用来对java项目的类进行压测

例子:将输入的两个参数通过IO存入文件

1、创建Java工程,工程目录如下

 

 

2、将Jmeter-lib下面的所有jar包导入java工程,

3、创建一个测试类并实现JavaSamplerClient接口或继承AbstractJavaSamplerClient,并重写:

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

具体代码:

输入参数类:

 1 package com.test;
 2 
 3 import java.io.File;
 4 import java.io.PrintWriter;
 5 
 6 /**
 7  * Created by Administrator on 2017/4/20.
 8  */
 9 public class OutputService {
10         public static void output(String filename,int a,int b,int c) throws Exception{
11             PrintWriter out=new PrintWriter(new File(filename));
12             out.write(a+":"+b+":"+c);
13             out.close();
14         }
15 }

测试类

 1 package com.test;
 2 
 3 import org.apache.jmeter.config.Arguments;
 4 import org.apache.jmeter.protocol.java.sampler.JavaSamplerClient;
 5 import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
 6 import org.apache.jmeter.samplers.SampleResult;
 7 
 8 /**
 9  * Created by Administrator on 2017/4/20.
10  */
11 public class PerformenceTest implements JavaSamplerClient {
12     private SampleResult results;
13     private String a;
14     private String b;
15     private String c;
16     private String filename;
17 
18     public static void main(String[] args) {
19         // TODO Auto-generated method stub
20         Arguments params = new Arguments();
21         params.addArgument("filename","0");
22         params.addArgument("a", "0");//设置参数,并赋予默认值0
23         params.addArgument("b", "0");//设置参数,并赋予默认值0
24         params.addArgument("c", "0");
25         JavaSamplerContext arg0 = new JavaSamplerContext(params);
26         PerformenceTest test = new PerformenceTest();
27         test.setupTest(arg0);
28         test.runTest(arg0);
29         test.teardownTest(arg0);
30     }
31     // 设置传入的参数,可以设置多个,已设置的参数会显示到Jmeter的参数列表中
32     public Arguments getDefaultParameters() {
33         Arguments params = new Arguments();
34         params.addArgument("filename", "0");//设置参数,并赋予默认值0
35         params.addArgument("a", "0");//设置参数,并赋予默认值0
36         params.addArgument("b", "0");//设置参数,并赋予默认值0
37         params.addArgument("c","0");
38         return params;
39     }
40 
41 
42     // 初始化方法,实际运行时每个线程仅执行一次,在测试方法运行前执行
43     public void setupTest(JavaSamplerContext arg0) {
44         results = new SampleResult();
45     }
46 
47 
48     // 测试执行的循环体,根据线程数和循环次数的不同可执行多次
49     @Override
50     public SampleResult runTest(JavaSamplerContext arg0) {
51         a = arg0.getParameter("a"); // 获取在Jmeter中设置的参数值
52         b = arg0.getParameter("b"); // 获取在Jmeter中设置的参数值
53         c = arg0.getParameter("c");
54         filename = arg0.getParameter("filename"); // 获取在Jmeter中设置的参数值
55         results.sampleStart();// jmeter 开始统计响应时间标记
56         try {
57             OutputService test = new OutputService();
58             test.output(filename,Integer.parseInt(a), Integer.parseInt(b),Integer.parseInt(c));
59             results.setSuccessful(true);
60 // 被测对象调用
61         } catch (Throwable e) {
62             results.setSuccessful(false);
63             e.printStackTrace();
64         } finally {
65             results.sampleEnd();// jmeter 结束统计响应时间标记
66         }
67         return results;
68     }
69 
70 
71     // 结束方法,实际运行时每个线程仅执行一次,在测试方法运行结束后执行
72     public void teardownTest(JavaSamplerContext arg0) {
73     }
74 
75 }

 

4、把该工程以jar包形式导出,选择File—Project Structure,如图所示,配置完成,点击应用:

 

 

 

然后,选择Build,打开刚才配置的jar包路径,就看到导出的jar包

 

 

5、然后把导出的jar包复制到Jmeter的lib\ext目录下,重启Jmeter

6、打开测试计划,添加线程组--Java请求,选择测试类,会自动加载出类中的参数,如图

 

 

给参数赋值

 

 

执行压测,并发数设为1000,运行结果如图所示

聚合报告

 

 

表格察看结果

 

 

 

图形结果

 

生成的文件

 

 

posted on 2017-04-20 16:15  rosa2015  阅读(9438)  评论(1编辑  收藏  举报