成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JMeter進階—詳解Java sampler的設計方法(附源碼)

開發 后端
jmeter通過Java請求可以實現該需求(這樣就可以處理一些公司自定義的協議了,開發提供協議接口,然后我們通過java sampler進行調用)。

[[431970]]

JMeter Java Sampler介紹

我們通常使用jmeter做http或者https請求的測試,但是有些場景我們需要直接調用Java接口進行性能測試, jmeter通過Java請求可以實現該需求(這樣就可以處理一些公司自定義的協議了,開發提供協議接口,然后我們通過java sampler進行調用)。本文將會詳細介紹jmeter中如何編寫 java請求并對其進行調用!

添加Java請求

JMeter進階——詳解Java sampler的設計方法(附源碼)

Java請求如下:

JMeter進階——詳解Java sampler的設計方法(附源碼)

其中上圖里com.my.demo.JmeterDemo2,即我們需要調用的Java類;str是我們需要傳入的參數。那么Jmeter中如何實現對java請求的調用呢?我會在本文詳細講解!

設計Java請求思路與代碼解析

如何編寫jmeter java請求,簡單地說分如下幾點:

1寫一個類,叫做Demo,使其繼承AbstractJavaSamplerClient;

2.在public SampleResult runTest(JavaSamplerContext arg0)方法里,寫處理java代碼的邏輯;

3.在public Arguments getDefaultParameters()方法里定義從jmeter中傳入java代碼的參數;

4.把類Demo 打成jar包并放入jmeter的\lib\ext 目錄下(如果Demo需要依賴其它jar包需要一起放入\lib\ext目錄下)

實例代碼如下:

  1. import org.apache.commons.lang3.StringUtils; 
  2. import org.apache.jmeter.config.Arguments; 
  3. import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient; 
  4. import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext; 
  5. import org.apache.jmeter.samplers.SampleResult; 
  6. public class JmeterDemo2 extends AbstractJavaSamplerClient 
  7. private SampleResult sr; 
  8. public Arguments getDefaultParameters() { 
  9. Argumentsparams = new Arguments(); 
  10. params.addArgument("str"""); 
  11. return params; 
  12. public SampleResult runTest(JavaSamplerContext arg0) { 
  13. this.sr.setSampleLabel("commonsio-demo2"); 
  14. try { 
  15. Stringstr=arg0.getParameter("para"); 
  16. //使用jar包中StringUtils類的countMatches方法來統計字符串a的個數 
  17. int num=StringUtils.countMatches(str, "a"); 
  18. if (num==0) { 
  19. this.sr.setResponseMessage("ResponseMessage:參數匹配0個"); //Sample Result 中的Response message 
  20. this.sr.setResponseData("ResponseData:參數匹配0個","UTF-8"); //Response Data的值,會被后面的覆蓋 
  21. this.sr.setSuccessful(true);//Sample Result 中的結果 
  22. }else { 
  23. this.sr.setResponseMessage("ResponseMessage:參數匹配"+num+"個"); 
  24. this.sr.setResponseData("ResponseData:參數匹配"+num+"個","UTF-8"); 
  25. this.sr.setSuccessful(false); 
  26. }catch (Exception e) { 
  27. this.sr.setResponseMessage(e.getMessage().toString()); 
  28. this.sr.setSuccessful(false); 
  29. }finally { 
  30. //this.sr.setResponseData("結束測試""UTF-8"); 
  31. super.getNewLogger().info("####測試執行####"); 
  32. try { 
  33. Thread.sleep(500); 
  34. }catch (InterruptedException e) { 
  35. // TODO Auto-generated catch block 
  36. e.printStackTrace(); 
  37. return this.sr; 
  38. public void setupTest(JavaSamplerContext context) { 
  39. super.setupTest(context); 
  40. super.getNewLogger().info("####測試開始####"); 
  41. this.sr = new SampleResult(); 
  42. this.sr.sampleStart(); 
  43. public void teardownTest(JavaSamplerContext context) { 
  44. super.teardownTest(context); 
  45. this.sr.sampleEnd(); 
  46. super.getNewLogger().info("####測試結束####"); 

這里對上述代碼做詳細分析:

主要用到的方法如下:

JMeter進階——詳解Java sampler的設計方法(附源碼)

方法執行的先后順序為:

getDefaultParameters() -->

setupTest(JavaSamplerContext context)-->

runTest(JavaSamplerContext context) -->

teardownTest(JavaSamplerContext context)

代碼運行后,打開日志結果如下,參數para 對應代碼String str=arg0.getParameter("para");

JMeter進階——詳解Java sampler的設計方法(附源碼)

從日志中可以看到

setupTest(JavaSamplerContext context) 中的代碼被執行1次,打印

####測試開始####

teardownTest(JavaSamplerContext context) 中的代碼被執行1次,打印

####測試結束####

而runTest中的方法super.getNewLogger().info("####測試執行####"); 被執行5次,因為在線程組中,設置執行5次。(線程組線程執行的次數,影響java請求中的runTest,而不會影響setupTest和teardownTest)。方法super.getNewLogger().info("")會把值寫入日志。

setResponseMessage("ResponseMessage:參數匹配0個");打印到Sample Result 中的Response message里;setSampleLabel("commonsio-demo2");設置java請求的顯示名稱,如下圖:

JMeter進階——詳解Java sampler的設計方法(附源碼)

setResponseData("ResponseData:參數匹配0個","UTF-8"); 打印到Response Data,如下圖:

JMeter進階——詳解Java sampler的設計方法(附源碼)

最后,方法setSuccessful(true)會影響測試結果

在IDE中開發Jmeter Java 請求

在IDE中開發Jmeter Java 請求與普通java開發一致,引入需要的java包以及jmeter相關jar包即可,引入Jmeter lib\ext下的ApacheJMeter_core.jar和ApacheJMeter_java.jar到IDE中!

 

責任編輯:姜華 來源: 今日頭條
相關推薦

2023-05-04 10:56:23

JmeterJava

2021-02-05 11:27:09

微服務源碼加載配置

2021-09-12 07:30:10

配置

2021-09-13 15:17:52

FastThreadL源碼Java

2021-09-02 07:00:01

Glide流程Android

2021-09-07 06:40:25

AndroidLiveData原理

2021-08-10 20:41:33

AndroidApp流程

2021-09-01 06:48:16

AndroidGlide緩存

2021-08-17 13:41:11

AndroidView事件

2009-07-30 13:42:28

ASP.NET報表問題ASP.NET

2009-12-22 17:08:18

Linux系統源碼包安

2018-05-13 16:00:22

主播APP視頻

2020-04-02 20:26:22

線程組插件開發

2021-09-03 07:27:38

AndroidGlide管理

2021-05-17 09:50:06

Kubebuilde源碼CURD

2009-06-17 13:58:00

JMeter測試EJB

2021-08-05 20:39:34

AndroidKotlinStandard.kt

2009-11-30 16:38:30

Android

2023-01-12 08:50:46

2011-07-20 11:09:58

蘋果 OpenCL 變量
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久精品无码一区二区三区 | 久久久精品视频一区二区三区 | 日韩在线小视频 | 亚洲男女视频在线观看 | 免费一级黄色电影 | 91精品久久久久久久久久小网站 | 成人性视频在线 | 久久不射电影网 | 这里只有精品99re | 亚洲免费人成在线视频观看 | 一区在线播放 | av中文在线| 国产激情一区二区三区 | 国产不卡一区 | 欧美日韩中文字幕在线 | 日韩一二区| 天天爽夜夜爽精品视频婷婷 | 无码日韩精品一区二区免费 | 欧美日韩国产高清视频 | 婷婷激情综合 | 伊人久操| www.久草.com| 国产999精品久久久久久 | 免费视频一区二区 | 国产高清视频在线观看 | 成人影院在线视频 | 91精品麻豆日日躁夜夜躁 | 亚洲在线一区 | 欧亚av在线| 日韩综合一区 | 亚洲精品国产第一综合99久久 | 亚洲成人av| 天天操夜夜爽 | 91成人免费看 | 欧美乱人伦视频 | 日韩aⅴ片 | 国产特级毛片aaaaaa喷潮 | 国产成人99久久亚洲综合精品 | 一级黄色片网址 | 国产不卡一| 天天艹日日干 |