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 测试元件:
被测试类被成功识别到。线程参数出现在页面上,有默认值。
添加一个结果树,可以运行了: