温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

jmeter怎么编写java请求

发布时间:2021-12-07 17:24:38 来源:亿速云 阅读:236 作者:iii 栏目:云计算

本篇内容主要讲解“jmeter怎么编写java请求”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“jmeter怎么编写java请求”吧!

通常情况下,推荐使用jmeter编写Java 请求

有以下优势

  • 脚本易维护

  • 易调试

  • 开发脚本周期短

不过网上扩展java请求文章比较多的还是,通过实现org.apache.jmeter.protocol.java.sampler.JavaSamplerClient接口

或是继承AbstractJavaSamplerClient虚类来实现java请求

大致步骤如下:

1. 建立java工程
2. 加载依赖包到java工程环境变量中,ApacheJMeter_core.jar和ApacheJMeter_java.jar编写时需要,调试需要加载jmeter全部依赖包(jmeter_home/lib下所有,实际上不是所有,包比较多,很难辨别)
3. 编写Java Sampler,继承AbstractJavaSamplerClient,并重写如下方法

[java] view plain copy

  1. public Arguments getDefaultParameters();可选,定义可用参数及默认值;  

  2. public void setupTest(JavaSamplerContext arg0):可选,测试前执行,做一些初始化工作;  

  3. public SampleResult runTest(JavaSamplerContext arg0);必选,实现自定义请求;  

  4. public void teardownTest(JavaSamplerContext arg0):可选,测试结束时调用;  

4. 打jar包,将包放到jmeter_home/lib/ext/下
5. 记得把所有额外的(自定义协议依赖的,非jmeter的)依赖包放到jmeter环境变量中
6. 重启jmeter,创建java Sampler选择刚定义好的测试类

7. 调整好参数即可开始测试。

编写模板介绍

[java] view plain copy

  1. package com.sampler;  

  2. //编写jmeter.sampler插件需加载的包  

  3. import org.apache.jmeter.config.Arguments;  

  4. import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;  

  5. import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;  

  6. import org.apache.jmeter.samplers.SampleResult;  

  7. //处理异常堆栈  

  8. import java.io.PrintWriter;  

  9. import java.io.StringWriter;  

  10.   

  11.   

  12. /** 

  13. * @author wo niu 

  14. * @func test ejb interface 

  15. *  继承虚类AbstractJavaSamplerClient 

  16. */  

  17. public class JavaSampler extends AbstractJavaSamplerClient {  

  18.   

  19. // main只是为调试用,最好先调试再打包  

  20. //运行前请把jmeter_home/lib下的所有jar包加载到IDE工具环境变量  

  21.   public static void main(String[] args)  

  22.   {  

  23.       Arguments args0 = new Arguments();  

  24.       args0.addArgument("parm_1","val_1");  

  25.       args0.addArgument("parm_2","val_2");  

  26.       args0.addArgument("parm_N","val_N");  

  27.       JavaSampler  test = new JavaSampler();  

  28.       JavaSamplerContext context = new JavaSamplerContext(args0);  

  29.       test.setupTest(context);  

  30.       test.runTest(context);  

  31.       test.teardownTest(context);  

  32.   }  

  33.   

  34. /** 

  35.  *  实现 runTest(JavaSamplerContext context)方法 

  36.  *  runTest()具体实施测试动作 

  37.  */  

  38. public SampleResult runTest(JavaSamplerContext context)  {  

  39.     /* 

  40.      *  SampleResult只能定义为局部变量,避免出现多线程安全问题 

  41.      *  网上一些帖子,定义为全域变量,这种做法是错误的 

  42.      */  

  43.     SampleResult results = new SampleResult();  

  44.     //默认请求成功  

  45.     results.setSuccessful(true);  

  46.     results.sampleStart(); //记录响应时间开始  

  47.     try{  

  48.         //动态变量从context中读取:  

  49.         // String key = context.getParameter("key");  

  50.         //TO-DO ejb接口调用  

  51.   

  52.         if(false){ //失败时处理  

  53.             results.setSuccessful(false);  

  54.             results.setResponseData("响应数据","utf8");  

  55.         }  

  56.     }catch(Throwable e){  

  57.         e.printStackTrace();  

  58.         results.setSuccessful(false);  

  59.         //处理异常堆栈为String,只有String才能回写响应数据  

  60.         results.setResponseData(toStringStackTrace(e),"utf8");  

  61.     }  

  62.     results.sampleEnd(); //记录响应时间结束  

  63.     return results;  

  64. }  

  65.   

  66. /** 

  67.  * 测试开始时调用,初始化 

  68.  */  

  69. public void setupTest(JavaSamplerContext context){  

  70. }  

  71. /** 

  72.  * 测试结束时调用 

  73.  */  

  74. public void teardownTest(JavaSamplerContext context){  

  75. }  

  76.   

  77. /** 

  78.  *  定义默认参数 

  79.  */  

  80. @Override  

  81. public Arguments getDefaultParameters() {  

  82.     Arguments args = new Arguments();  

  83.     /* 

  84.      * test data 

  85.      */  

  86.     args.addArgument("parm_1","val_1");  

  87.     args.addArgument("parm_2","val_2");  

  88.     args.addArgument("parm_N","val_N");  

  89.     return args;  

  90. }  

  91.   

  92. /** 

  93.  *  处理异常堆栈为String,只有String才能回写响应数据 

  94.  * @param e 

  95.  * @return 

  96.  */  

  97. private String toStringStackTrace(Throwable e){  

  98.     String exception = null;  

  99.     try {  

  100.         StringWriter sw = new StringWriter();  

  101.         PrintWriter pw = new PrintWriter(sw);  

  102.         e.printStackTrace(pw);  

  103.         exception = sw.toString();  

  104.         pw.close();  

  105.         sw.close();  

  106.     } catch (Exception e1) {  

  107.         e1.printStackTrace();  

  108.     }  

  109.     return exception;  

  110. }  

  111.   

  112. }  

到此,相信大家对“jmeter怎么编写java请求”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI