zoukankan      html  css  js  c++  java
  • 在JMeter中引用外部的jar包以及扩展适合的Java程序

    1.把写好的应用打包,放到lib/ext下,JMeter运行时即可找到。同时还要把用户自己编写的应用所依赖的包放在lib下。运行JMeter。界面打开后,右键“测试计划”,添加线程组;右键“线程组”-添加-Sampler-Java请求,在类名称处选择刚才写好的类。

     2.扩展Java请求

    要扩展Java请求此应用,要用到lib/ext/ApacheJMeter_java.jar,他封装此应用。
    首先,需要继承ApacheJMeter_java.jar中的抽象类AbstractJavaSamplerClient,它提供了四个抽象方法:

    void setupTest(JavaSamplerContext arg0),SampleResult runTest(JavaSamplerContext arg0), void teardownTest(JavaSamplerContext arg0), Arguments getDefaultParameters()。setupTest和teardownTest与JUnit中的类似,分别在测试的开始和结束时执行。 runTest为主要测试方法,所有测试程序都在这里完成,JavaSamplerContext参数封装测试中需要的所有外界数据(如配置信息等)。其 SampleResult封装了所有测试结果(如:测试是否成功?程序执行时间等),getDefaultParameters用于把测试的一些默认数据在程序运行前显示到JMeter客户端,这个可以和runTest配合使用,实现数据的呈现和配置。

    package jmetertest;

    import org.apache.jmeter.config.Arguments;
    import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
    import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
    import org.apache.jmeter.samplers.SampleResult;

    import jmetertest.SignedRequestHelper;

    /**
    * APP接口签名jmeter请求
    *
    *
    */
    public class SignedRequestTest extends AbstractJavaSamplerClient {
    private SampleResult results;
    private String plainText;
    private boolean isGET;
    private String mode;
    private String resultData;


    // 设置传入的参数,可以设置多个,已设置的参数会显示到Jmeter的参数列表中
    public Arguments getDefaultParameters() {
    Arguments params = new Arguments();
    params.addArgument("plainText", "");//设置参数,并赋予默认值0
    params.addArgument("mode","GET");//设置参数,并赋予默认值0
    return params;
    }


    // 初始化方法,实际运行时每个线程仅执行一次,在测试方法运行前执行
    public void setupTest(JavaSamplerContext arg0) {
    results = new SampleResult();
    }


    // 测试执行的循环体,根据线程数和循环次数的不同可执行多次
    @Override
    public SampleResult runTest(JavaSamplerContext arg0) {
    plainText = arg0.getParameter("plainText"); // 获取在Jmeter中设置的参数值
    mode = arg0.getParameter("mode");// 获取在Jmeter中设置的参数值
    isGET = mode.equals("GET");
    results.sampleStart();// jmeter 开始统计响应时间标记
    try {
    // 通过下面的操作就可以将被测方法的响应输出到Jmeter的察看结果树中的响应数据里面了。

    resultData = String.valueOf(SignedRequestHelper.sign(plainText, isGET));
    if (resultData != null && resultData.length() > 0) {
    results.setResponseData("result:"+resultData, null);
    results.setDataType(SampleResult.TEXT);
    }
    // System.out.println(resultData);
    results.setSuccessful(true);
    } catch (Throwable e) {
    results.setSuccessful(false);
    e.printStackTrace();
    } finally {
    results.sampleEnd();// jmeter 结束统计响应时间标记
    }
    return results;
    }


    // 结束方法,实际运行时每个线程仅执行一次,在测试方法运行结束后执行
    public void teardownTest(JavaSamplerContext arg0) {
    System.out.println(resultData);
    }
    /*public static void main(String[] args) {
    // TODO Auto-generated method stub
    Arguments params = new Arguments();
    params.addArgument("plainText", "0");//设置参数,并赋予默认值0
    params.addArgument("mode", "GET");//设置参数,并赋予默认值0
    JavaSamplerContext arg0 = new JavaSamplerContext(params);
    SignedRequestTest test = new SignedRequestTest();
    test.setupTest(arg0);
    test.runTest(arg0);
    test.teardownTest(arg0);
    } */
    }

  • 相关阅读:
    《Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks》
    YOLO(v1)
    循环赛日程表问题(分治法)
    平面最接近点对问题(分治法)
    SQLite学习心得
    如何找到Linux下常用命令的源码
    WiFi安全之WPA介绍
    七种不良的工作习惯
    Git 技巧小结
    微信智能硬件平台 简介
  • 原文地址:https://www.cnblogs.com/hong0632/p/6093585.html
Copyright © 2011-2022 走看看