当前位置:   article > 正文

java扩展jmeter依赖

java扩展jmeter依赖

前置条件

创建一个maven项目, 引入依赖

  1. <dependency>
  2. <groupId>org.apache.jmeter</groupId>
  3. <artifactId>ApacheJMeter_core</artifactId>
  4. <version>3.2</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.apache.jmeter</groupId>
  8. <artifactId>ApacheJMeter_java</artifactId>
  9. <version>3.2</version>
  10. </dependency>
  11. // 用于函数助手开发
  12. <dependency>
  13. <groupId>org.apache.jmeter</groupId>
  14. <artifactId>ApacheJMeter_functions</artifactId>
  15. <version>3.2</version>
  16. </dependency>

若引入依赖失败,找到仓库内的文件,删除,reimport一下依赖即可

默认路径 /Users/lvxueqing/.m2/repository/org/apache/jmeter

一、Java请求开发

方式1 继承AbstractJavaSamplerClient类

  1. public class First extends AbstractJavaSamplerClient {
  2. public SampleResult runTest(JavaSamplerContext javaSamplerContext) {
  3. System.out.println(" 我的demo!!!!");
  4. return null;
  5. }
  6. }

使用方式:

1)到idea终端 打包 mvn clean package

2)将打包后生成的文件,放到jmeter的/apache-jmeter-5.2.1/lib/ext路径下

3)重启jemter

4)添加线程组,添加java请求,可看到刚刚写好的类

5)点击运行 日志打印了

方式2 实现JavaSamplerClient接口

  1. public class Second implements JavaSamplerClient {
  2. private static final String URLNAME="URL"; //jmeter属性中显示的变量名称
  3. private static final String DEFAULTURL="http://www.baidu.com"; //jmeter属性中显示的变量值
  4. private String resultData; // 存储响应数据,将结果放到查看结果树里
  5. /**
  6. * 决定了jmeter中要展示哪些属性, 第一个运行
  7. */
  8. public Arguments getDefaultParameters() {
  9. System.out.println("getDefaultParameters run!! ");
  10. Arguments arguments = new Arguments();
  11. arguments.addArgument(URLNAME,DEFAULTURL);
  12. return arguments;
  13. }
  14. //接收用户输入的URL
  15. private String inputUrl ;
  16. /**
  17. * 初始化的方法
  18. */
  19. public void setupTest(JavaSamplerContext javaSamplerContext) {
  20. System.out.println("setupTest run!! ");
  21. inputUrl = javaSamplerContext.getParameter(URLNAME,DEFAULTURL);
  22. System.out.println("用户输入的url地址是 " + inputUrl);
  23. }
  24. /**
  25. * 具体功能逻辑的方法
  26. */
  27. public SampleResult runTest(JavaSamplerContext javaSamplerContext) {
  28. System.out.println("runTest run!! ");
  29. SampleResult sampleResult = new SampleResult();
  30. StringBuilder sb = new StringBuilder();
  31. try {
  32. URL url = new URL(inputUrl);
  33. URLConnection conn = url.openConnection();
  34. byte[] buffer = new byte[1024];
  35. int len;
  36. sampleResult.sampleStart(); // 标记事务开始
  37. InputStream in = conn.getInputStream();
  38. while ((len=in.read(buffer)) != -1){
  39. resultData = new String(buffer,"UTF-8");
  40. sb.append(resultData);
  41. }
  42. } catch (MalformedURLException e) {
  43. e.printStackTrace();
  44. } catch (IOException e) {
  45. e.printStackTrace();
  46. }
  47. // resultData = "这就是响应结果";
  48. resultData = sb.toString();
  49. sampleResult.setSuccessful(true); // 告诉查看结果树 请求是否成功
  50. sampleResult.setSampleLabel("自定义java访问请求");
  51. sampleResult.setResponseData(resultData,"UTF-8");
  52. sampleResult.setDataType(SampleResult.TEXT);
  53. return sampleResult;
  54. }
  55. /**
  56. * 做一些收尾工作的方法
  57. */
  58. public void teardownTest(JavaSamplerContext javaSamplerContext) {
  59. System.out.println("teardownTest run!! ");
  60. }
  61. }

结果展示

二、函数助手开发

注意: 函数相关类要放到functions目录下

  1. public class Plus extends AbstractFunction {
  2. private Object[] values;
  3. private CompoundVariable first,second; // 存储第一个和第二个参数
  4. /**
  5. * 执行方法
  6. */
  7. public String execute(SampleResult sampleResult, Sampler sampler) throws InvalidVariableException {
  8. System.out.println(" execute run ");
  9. first = (CompoundVariable) values[0];
  10. System.out.println("第一个参数是 " + first);
  11. second = (CompoundVariable) values[1];
  12. System.out.println("第二个参数是 " + second);
  13. int count = new Integer(first.execute().trim()) + new Integer(second.execute().trim()) ;
  14. System.out.println("和 " + count);
  15. return String.valueOf(count);
  16. }
  17. /**
  18. * 设置参数, 接收用户传递的参数
  19. */
  20. public void setParameters(Collection<CompoundVariable> collection) throws InvalidVariableException {
  21. System.out.println(" setParameters run ");
  22. checkParameterCount(collection,2);
  23. values = collection.toArray();
  24. }
  25. /**
  26. * 功能名称
  27. */
  28. public String getReferenceKey() {
  29. System.out.println(" getReferenceKey run ");
  30. return "__MyDemoPlus";
  31. }
  32. /**
  33. * 功能描述 参数描述
  34. */
  35. public List<String> getArgumentDesc() {
  36. System.out.println(" getArgumentDesc run ");
  37. List desc = new ArrayList();
  38. desc.add("第一个数");
  39. desc.add("第二个数");
  40. return desc;
  41. }
  42. }

使用方式:

1)到idea终端 打包 mvn clean package

2) 将打包后生成的jar文件,放到jmeter的/apache-jmeter-5.2.1/lib/ext路径下

3)重启jemter

结果展示

结果可展示在日志中

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/483555?site
推荐阅读
相关标签
  

闽ICP备14008679号