千家信息网

jmeter怎么编写java请求

发表于:2024-09-25 作者:千家信息网编辑
千家信息网最后更新 2024年09月25日,本篇内容主要讲解"jmeter怎么编写java请求",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"jmeter怎么编写java请求"吧!通常情况下,推荐使用
千家信息网最后更新 2024年09月25日jmeter怎么编写java请求

本篇内容主要讲解"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. * @author wo niu

  13. * @func test ejb interface

  14. *

  15. * 继承虚类AbstractJavaSamplerClient

  16. */

  17. public class JavaSampler extends AbstractJavaSamplerClient {

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

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

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

  21. {

  22. Arguments args0 = new Arguments();

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

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

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

  26. JavaSampler test = new JavaSampler();

  27. JavaSamplerContext context = new JavaSamplerContext(args0);

  28. test.setupTest(context);

  29. test.runTest(context);

  30. test.teardownTest(context);

  31. }

  32. /**

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

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

  35. */

  36. public SampleResult runTest(JavaSamplerContext context) {

  37. /*

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

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

  40. */

  41. SampleResult results = new SampleResult();

  42. //默认请求成功

  43. results.setSuccessful(true);

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

  45. try{

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

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

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

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

  50. results.setSuccessful(false);

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

  52. }

  53. }catch(Throwable e){

  54. e.printStackTrace();

  55. results.setSuccessful(false);

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

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

  58. }

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

  60. return results;

  61. }

  62. /**

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

  64. */

  65. public void setupTest(JavaSamplerContext context){

  66. }

  67. /**

  68. * 测试结束时调用

  69. */

  70. public void teardownTest(JavaSamplerContext context){

  71. }

  72. /**

  73. * 定义默认参数

  74. */

  75. @Override

  76. public Arguments getDefaultParameters() {

  77. Arguments args = new Arguments();

  78. /*

  79. * test data

  80. */

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

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

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

  84. return args;

  85. }

  86. /**

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

  88. * @param e

  89. * @return

  90. */

  91. private String toStringStackTrace(Throwable e){

  92. String exception = null;

  93. try {

  94. StringWriter sw = new StringWriter();

  95. PrintWriter pw = new PrintWriter(sw);

  96. e.printStackTrace(pw);

  97. exception = sw.toString();

  98. pw.close();

  99. sw.close();

  100. } catch (Exception e1) {

  101. e1.printStackTrace();

  102. }

  103. return exception;

  104. }

  105. }

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

0