1. 程式人生 > >Jmeter-Java二次開發

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、選擇自己開發的類