Jmeter-Java二次開發
阿新 • • 發佈:2019-02-14
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
4、選擇自己開發的類