zoukankan      html  css  js  c++  java
  • jmeter 二次开发---实现自定义函数插件

    1.前提:

    有时候,Jmeter自带的函数,可能不能满足于业务的需求,这时候,我们可以自己写一个函数插件;

    2.创建maven工程

    一直next,输入GroupID,ArtifactId->finsh

    3.编辑pom.xml

    创建好maven工程后,引入Jmeter的jar包,注意你本地Jmeter版本是几,这里<version></version>就写几

    <dependency>
      <groupId>org.apache.jmeter</groupId>              <artifactId>ApacheJMeter_core</artifactId>
    <version>3.3</version>
    </dependency>
    
    <dependency>
    <groupId>org.apache.jmeter</groupId>        <artifactId>ApacheJMeter_java</artifactId>
    <version>3.3</version>
    </dependency>

    4.创建一个package 

    实现扩展jmeterfunction,主要有两点:

    1.实现function的类的package声明必须包含".functions"

    2.需要继承org.apache.jmeter.functions.AbstractFunction,并且实现相应的方法

    5.扩展类AbstractFunction讲解

    public List<String> getArgumentDesc()

    功能描述:顾名思义描述你写的这个方法是干嘛使的。

    public String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException

    需要实现什么功能。

    public String getReferenceKey()

    返回function名称

    public void setParameters(Collection<CompoundVariable> parameters) throws InvalidVariableException

    设置参数,接收用户传递的参数

    5.代码讲解

    public class TicketNo extends AbstractFunction{
    
        //添加方法描述
        private static final List<String> desc = new LinkedList<String>();
        static {
            desc.add("ticketNo");
        }
        //function名称
        private static final String KEY = "__JddTicketNo";
        private static final int num = 1;
        
         //传入参数的值
        private Object[] values;
        
        private Date data =new Date();
        
        /**功能描述**/
        public List<String> getArgumentDesc() {
            // TODO Auto-generated method stub
            return desc;
        }
    
        @Override
        public String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException {
            try {
                Thread.sleep(1000);
                String ticket = String.valueOf(data.getTime())
                System.out.println("当前输出"+ticket);
                return ticket;
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                throw new InvalidVariableException(e);
            }
        }
    
        /**
         * 设置参数。接收用户传递的参数
         * @param collection
         * @throws InvalidVariableException
         * **/
        @Override
        public void setParameters(Collection<CompoundVariable> parameters) throws InvalidVariableException {
            checkParameterCount(parameters, num);
            values = parameters.toArray();
            
        }
    
        /**返回function名称**/
        @Override
        public String getReferenceKey() {
            return KEY;
        }
    
    }
     
  • 相关阅读:
    android handle详解
    android面试详解
    linux网络编程-一个简单的线程池(41)
    linux网络编程-posix条件变量(40)
    如何写一个简单的分页
    jQuery 3 有哪些新东西
    浅析正则表达式模式匹配的 String 方法
    jQuery源码浅析2–奇技淫巧
    前端文本截断
    你会用setTimeout吗
  • 原文地址:https://www.cnblogs.com/111testing/p/10426576.html
Copyright © 2011-2022 走看看