• Jmeter书中不会教你的(99)——java request实例


    简单来说java request就是在jmeter界面通过传入一些设置的参数给特定的java代码去处理,最后在jmeter中输出结果。

    比如以下,设置两个参数,选择test.MyJavaRequest类,这个是一个自行创建的java代码,将这个java代码导出为jar包后存放在/lib/ext下,这时候再java request下拉菜单中会自动加载这个类。

    这个java代码怎么写?在jmeter中使用的需要按固定格式

    一、在eclipse创建一个java工程,比如JavaRequest

    二、在src下创建package包,如test

    三、在test包下创建类,比如MyJavaRequest.java

    四、右击工程,将以下jar包加入到build path

    五、类MyJavaRequest实现JavaSamplerClient接口或继承AbstractJavaSamplerClient,并重写

    需要改写以下四个方法

    public Arguments getDefaultParameters()  设置默认的参数,就是jmeter界面上看到的默认参数在此设置

    public void setupTest(JavaSamplerContext arg0)在测试方法前做一些初始化工作,如读取参数值,每个线程只执行一次

    public SampleResult runTest(JavaSamplerContext context) 开始测试,在这里可以使用setupTest中初始化的参数值

    public void teardownTest(JavaSamplerContext arg0) 测试结束时调用,每个线程只执行一次

     

    具体代码如下:实现读取参数值,设置取样器名称"test speed of print something",设置响应结果

    1. package test;
    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. import java.util.Random;
    7. public class MyJavaRequest extends AbstractJavaSamplerClient{
    8. private String a;
    9. private int b;
    10. //jmeter gui参数
    11. @Override
    12. public Arguments getDefaultParameters() {
    13. Arguments params = new Arguments();
    14. params.addArgument("String1", "hello");
    15. params.addArgument("number2", "1234");
    16. return params;
    17. }
    18. @Override
    19. public void setupTest(JavaSamplerContext arg0) {
    20. a = arg0.getParameter("String1");
    21. b = arg0.getIntParameter("number2");
    22. }
    23. public SampleResult runTest(JavaSamplerContext context) {
    24. SampleResult results = new SampleResult();
    25. results.setSampleLabel("test speed of print something");
    26. Random r = new Random();
    27. try {
    28. results.sampleStart();
    29. System.out.println(a + " " + b);
    30. Thread.sleep(r.nextInt(100));
    31. results.setSuccessful(true);
    32. }catch(Exception e) {
    33. results.setSuccessful(false);
    34. e.printStackTrace();
    35. }finally {
    36. results.sampleEnd();
    37. }
    38. results.setResponseData("a is " + a + " and b is " + b,null);
    39. return results;
    40. }
    41. @Override
    42. public void teardownTest(JavaSamplerContext arg0) {
    43. System.out.println("test is over");
    44. }
    45. }

    六、将此工程导出为jar包,并将此jar包放入jmeter的lib/ext下

    eclipse中file>export

     七、重新打开jmeter在java request取样器中选择要测试的类

     

     

  • 相关阅读:
    基于Vue+SpringBoot的大学计算机课程管理平台 开源项目
    C语言08、数据在内存中的存储、大小端存储模式
    如何合并pdf文件,pdf合并教程
    【ML】Q-Learning应用于具有连续状态的问题(Q-Learning 学习滑冰)
    温控采集器对接-java版-modbus4j
    js实现关闭子窗口时刷新父窗口
    Docker 搭建Redis Cluster 集群
    (免费领源码)java#SpringBoot#mysql客户信息管理系统80944-计算机毕业设计项目选题推荐
    BGP高级特性——4字节AS号
    Google Earth Engine 教程——Landsat 8 T1 SR 影像‘pixel_qa’ band bitmasks详解
  • 原文地址:https://blog.csdn.net/agrapea/article/details/125395582