Java Jmeter自定义函数

Java Jmeter自定义函数,java,jmeter,Java,Jmeter,我需要在Jmeter中创建一个自定义函数,由于性能问题,我不能使用beanshell 我按照和编写了一个java类,但当我编译它时,我似乎无法让Jmeter识别它 我的班级: package custom.functions; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.functions.AbstractFunction; import org.apache.jmeter.fu

我需要在Jmeter中创建一个自定义函数,由于性能问题,我不能使用beanshell

我按照和编写了一个java类,但当我编译它时,我似乎无法让Jmeter识别它

我的班级:

package custom.functions;

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;

import java.util.Collection;
import java.util.LinkedList;
import java.util.List;

public class Username extends AbstractFunction{
    private static final List<String> desc = new LinkedList<String>();
    private static final String KEY = "__Username";
    private int number = 0;

    static {
        desc.add("Pass a random value to get a valid username for the system.");
    }

    public Username() {
        super();
    }

    @Override
    public synchronized String execute(SampleResult previousResult, Sampler currentSampler)
            throws InvalidVariableException {
        try {
            return getValue(number);
        } catch(Exception e){
            throw new InvalidVariableException(e);
        }
    }

    public String getValue(int number){
        return "John-Smith";
    }

    @Override
    public synchronized void setParameters(Collection<CompoundVariable> parameters) throws InvalidVariableException {
        checkParameterCount(parameters, 1, 1);
        Object[] values = parameters.toArray();
        number = Integer.parseInt(((CompoundVariable) values[0]).execute().trim());
    }

    @Override
    public String getReferenceKey() {
        return KEY;
    }

    @Override
    public List<String> getArgumentDesc() {
        return desc;
    }
}
我将jar放在我的jmeter lib/ext目录中,并尝试单独运行jmeter,并使用
-Jsearch_path=../lib/ext/custom functions.jar
,但无论哪种方式,当我打开函数助手工具时,它都没有列出,而是使用一个简单的测试计划来验证函数是否发送
%24%7B_u用户名%281%29%7D


我是不是把文件放错地方了?它的名称是否不正确?

您可以将groovy-all.jar放在Jmeter的类路径上,然后您就可以运行外部的.groovy脚本,或者您可以添加一个JSR223 groovy采样器。

我的问题是,我使用Java 8而不是Java 7编译了我的类,Java 7是我用于Jmeter的运行时

META-INF/
META-INF/MANIFEST.MF
custom/
custom/functions/
custom/functions/Username.class