zoukankan      html  css  js  c++  java
  • Jmeter扩展自定义函数

    步骤1、导入libext下ApacheJMeter_core.jar和ApacheJMeter_functions.jar

    步骤2、新建function的类的package声明必须已".functions"结尾,如com.mytest.fuctions

    步骤3、继承AbstractFunction类,并实现相应的方法

    package com.mytest.functions;
    
    import java.util.Collection;
    import java.util.LinkedList;
    import java.util.List;
    
    import org.apache.jmeter.engine.util.CompoundVariable;
    import org.apache.jmeter.functions.AbstractFunction;
    import org.apache.jmeter.functions.InvalidVariableException;
    import org.apache.jmeter.samplers.SampleResult;
    import org.apache.jmeter.samplers.Sampler;
    
    public class MyFunction extends AbstractFunction{
        
        // 传入参数的值
        private Object[] values;
        
     // 自定义function的描述
        private static final List<String> desc = new LinkedList<String>();
        static {
            desc.add("Get a random int within specified parameter value.");
        }
    
        // function名称
        private static final String KEY = "__MyRandomFunc";
        
        @Override
        public List<String> getArgumentDesc() {
            // TODO Auto-generated method stub
            return desc;
        }
    
        /*
         * JMeter会将上次运行的SampleResult和当前的Sampler作为参数传入到该方法里,返回值就是在运行该function后得到的值,以String类型返回。
         * 该方法如果操作了非线程安全的对象(比如文件),则需要将对该方法进行线程同步保护
         */
        @Override
        public String execute(SampleResult arg0, Sampler arg1) throws InvalidVariableException {
            // TODO Auto-generated method stub
            return null;
        }
    
        /*
          这个就是function的名字。JMeter的命名规则是在方法名前面加入双下划线"__"。比如"__MyRandomFunc",
         function的名字跟实现该类的类名应该一致,而且该名字应该以static final的方式在实现类中定义好,避免在运行的时候更改它
         */
        @Override
        public String getReferenceKey() {
            // TODO Auto-generated method stub
            return KEY;
        }
    
        /*
         * 这个方法在用于传递用户在执行过程当中传入的实际参数值。该方法在function没有参数情况下也会被调用。
         * 一般该方法传入的参数会被保存在类内全局变量里,并被后面调用的execute方法中使用到
         */
        @Override
        public void setParameters(Collection<CompoundVariable> parameters) throws InvalidVariableException {
            values = parameters.toArray(); // 将值存入类变量中
            
        }
    
    }
  • 相关阅读:
    使用微软WPF技术开发产品优势究竟在那里
    北京地铁的众生相,发上来和大家分享(北京白领生活真实写照)
    长期提供WindowsPhone7培训 & HTML5培训 & Silverlight培训 & WPF培训
    Silverlight中开发和设计人员的合作
    Silverlight 动态调用 WebService
    (学)Lazarus 在 WinCE 下如何取消标题栏上的 OK 或 X 按钮
    (学)新版动态表单研发,阶段成果4
    (学)新版动态表单研发,阶段成果5
    (原)Lazarus下WinCE终端、服务器心跳监控(Ping)源码
    (原)Lazarus 在 Thread 中使用 SQLQuery 查询Oracle 会出现异常
  • 原文地址:https://www.cnblogs.com/yaoqingzhuan/p/12058578.html
Copyright © 2011-2022 走看看