Jmeter 利用AbstractJavaSamplerClient 作為基類識別被測代碼。
被測類需要繼承AbstractJavaSamplerClient類,然后倒入jmeter安裝路徑下,進行測試。以下是詳細步驟:
創建工程,導入以下兩個依賴:
<!-- https://mvnrepository.com/artifact/org.apache.jmeter/ApacheJMeter_core --> <dependency> <groupId>org.apache.jmeter</groupId> <artifactId>ApacheJMeter_core</artifactId> <version>5.1.1</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.jmeter/ApacheJMeter_java --> <dependency> <groupId>org.apache.jmeter</groupId> <artifactId>ApacheJMeter_java</artifactId> <version>5.1.1</version> </dependency>
創建MyJavaRequest 類,繼承AbstractJavaSamplerClient類,重寫其中一些方法:
getDefaultParameters方法:定義了線程參數。該方法中定義的參數會在Jmeter GUI頁面出現,要求填寫。
setupTest方法:test的准備工作。
runTest方法:被測試的java代碼寫在sampleStart和sampleEnd中間。執行時間會被系統計時。
teardownTest方法:測試之后的回收工作。
以下是一個簡單的被測試類。
package el.testRequest; import java.util.Random; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient; import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext; import org.apache.jmeter.samplers.SampleResult; public class MyJavaRequest extends AbstractJavaSamplerClient { private String a; private int b; @Override public Arguments getDefaultParameters() { Arguments params = new Arguments(); params.addArgument("String1", "hello"); params.addArgument("number2", "1234"); return params; } @Override public void setupTest(JavaSamplerContext arg0) { a = arg0.getParameter("String1"); b = arg0.getIntParameter("number2"); } public SampleResult runTest(JavaSamplerContext context) { SampleResult results = new SampleResult(); results.setSampleLabel("test speed of print something"); Random r = new Random(); try { results.sampleStart(); System.out.println(a + " " + b); Thread.sleep(r.nextInt(100)); results.setSuccessful(true); }catch(Exception e) { results.setSuccessful(false); e.printStackTrace(); }finally { results.sampleEnd(); } results.setResponseData("a is " + a + " and b is " + b,null); return results; } @Override public void teardownTest(JavaSamplerContext arg0) { System.out.println("test is over"); } }
將該類導出成Jar文件,既可以是runable的也可以是一般的。如果被測試類還依賴了別的類,要將被依賴類也一起導出成一個jar文件。
放在Jmeter的安裝路徑中:C:xxxxxxxxxxx\apache-jmeter-5.1.1\lib\ext
重啟Jmeter,添加Java request 測試元件:
被測試類被成功識別到。線程參數出現在頁面上,有默認值。
添加一個結果樹,可以運行了: