• 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取样器中选择要测试的类

     

     

  • 相关阅读:
    Redis - 10、主从复制
    Python机器学习预测+回归全家桶,新增TCN,BiTCN,TCN-GRU,BiTCN-BiGRU等组合模型预测...
    Sharding JDBC案例实战
    PPT怎么转换成Word文档?分享两种转换小妙招
    nginx 配置 proxy_next_upstream 会出现未预期 502 错误问题排查
    covfefe 靶机/缓冲区溢出
    linux服务器在后台运行程序
    前端编程应该了解的数据结构——链表
    思维导图在初中化学“物质构成的奥秘”教学中的应用
    电机控制、运动控制、过程控制三者关系
  • 原文地址:https://blog.csdn.net/agrapea/article/details/125395582