Jmeter-Java二次开发

maven依赖

<dependencies>
        <dependency>
            <groupId>org.apache.jmeter</groupId>
            <artifactId>ApacheJMeter_core</artifactId>
            <version>${jmeter-version}</version>
            <!--在本地测试时请注释掉scope -->
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.jmeter</groupId>
            <artifactId>ApacheJMeter_java</artifactId>
            <version>${jmeter-version}</version>
            <!-- 在本地测试时请注释掉scope -->
            <scope>provided</scope>
        </dependency>
</dependencies>

<build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.5.3</version>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <configuration>
                            <descriptorRefs>
                                <descriptorRef>jar-with-dependencies</descriptorRef>
                            </descriptorRefs>
                            <descriptors>
                                <!--<descriptor>src/assembly/assembly.xml</descriptor>-->
                            </descriptors>
                        </configuration>
                    </execution>
                </executions>
                <configuration>
                    <!-- 最终打包名称 -->
                    <finalName>as_velocity_10_sampler</finalName>
                    <appendAssemblyId>false</appendAssemblyId>
                </configuration>
            </plugin>
        </plugins>
    </build>

PS1:在开发时,请注释掉引用包ApacheJMeter_core,ApacheJMeter_java下的scope
PS2:使用maven-assembly-plugin 插件,将项目依赖的三方包一起打包。如果不用插件,就必须拷贝所有依赖的包到jmeter的 lib/ext下

JAVA开发

取样器类必须继承 AbstractJavaSamplerClient

public class SimpleSampler extends AbstractJavaSamplerClient {

    // 用于设置传入的参数,可以设置多个,已设置的参数会显示到Jmeter参数列表中
    // Arguments类表示一组参数对象
    public Arguments getDefaultParameters() {
        Arguments params = new Arguments();
        params.addArgument(HOST, "10.57.32.196");
        params.addArgument(PORT, "3000");

        return params;
    }


    // 初始化方法,用于初始化性能测试时的每个线程,实际运行时每个线程仅执行一次
    //
    // JavaSamplerContext类用于向JavaSamplerClient实现提供上下文信息
    // 这当前由在GUI中指定的初始化参数组成,其他数据将来可以通过JavaSamplerContext访问
    public void setupTest(JavaSamplerContext context) {

    }

    // 性能测试时的线程运行体,即测试执行的循环体,根据线程数和循环次数的不同可执行多次
    public SampleResult runTest(JavaSamplerContext context) {

        return sampleResult;
    }

    // 测试结束方法,用于结束性能测试中的每个线程,实际运行时,每个线程仅执行一次,在测试方法运行结束后执行
    public void teardownTest(JavaSamplerContext context) {
        super.teardownTest(context);

    }

}

本地测试

再说一遍:注释掉引用包ApacheJMeter_core,ApacheJMeter_java下的scope

public class Demo {

    public static void main(String[] args) throws NoSuchMethodException, UnsupportedEncodingException {


        SimpleSampler jmeter = new SimpleSampler();

        Arguments arguments = jmeter.getDefaultParameters();
        jmeter.setupTest(new JavaSamplerContext(arguments));
        SampleResult sampleResult = jmeter.runTest(new JavaSamplerContext(arguments));
        jmeter.teardownTest(new JavaSamplerContext(arguments));

        System.out.println(new String(sampleResult.getResponseData(),"utf-8"));


    }

}

jmeter集成

再说一遍:打开注释引用包ApacheJMeter_core,ApacheJMeter_java下的scope

1、将打成的包丢到 jmeter/lib/ext

2、重新启动jmeter

3、添加java请求的Sampler
image_1c9jbdasanb96cji6t1gvu1ct9.png-136.8kB

4、选择自己开发的类

猜你喜欢

转载自blog.csdn.net/u012092620/article/details/80021044