使用Java编写JMeter的测试用例

创建项目并引入依赖

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

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

创建测试用例


public class TMPTCPSimple extends AbstractJavaSamplerClient {
    private TiConnection connection;
    private ExecutorService threadPool;
    private Object lock;

    /**
     * 用于接收测试需要设置的一些参数
     * @return
     */
    @Override
    public Arguments getDefaultParameters() {
        Arguments arguments = new Arguments();
        arguments.addArgument("host","");
        arguments.addArgument("port","");
        return arguments;
    }

    /**
     * 实例启动前执行一次,用于初始化一些参数,这里用于初始化Tcp的连接
     * @return
     */
    @Override
    public void setupTest(JavaSamplerContext context) {
        String hostAndPort = "loclhost:5601";
        ConnectionManager connectionManager = new ConnectionManager(hostAndPort);
        connection = connectionManager.getConnection();
        threadPool = Executors.newSingleThreadExecutor();
        lock = new Object();
    }

    /**
     * 每一次循环测试需要执行的一些业务逻辑
     * @return
     */
    @Override
    public SampleResult runTest(JavaSamplerContext context) {
        SampleResult result = new SampleResult();
        result.sampleStart();

        result.setResponseData("需要返回给response的数据","utf-8");

        result.setSuccessful(true);
        result.setResponseCode("OK");
        result.sampleEnd();
        return result;
    }

    /**
     * 每测试一轮后执行资源回收任务
     * @return
     */
    @Override
    public void teardownTest(JavaSamplerContext context) {
        connection.close();
        connection = null;
        super.teardownTest(context);
    }

}