[关闭]
@1234567890 2018-03-27T09:11:28.000000Z 字数 2508 阅读 1516

jmeter二次开发

性能测试


maven依赖

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.apache.jmeter</groupId>
  4. <artifactId>ApacheJMeter_core</artifactId>
  5. <version>${jmeter-version}</version>
  6. <!--在本地测试时请注释掉scope -->
  7. <scope>provided</scope>
  8. </dependency>
  9. <dependency>
  10. <groupId>org.apache.jmeter</groupId>
  11. <artifactId>ApacheJMeter_java</artifactId>
  12. <version>${jmeter-version}</version>
  13. <!-- 在本地测试时请注释掉scope -->
  14. <scope>provided</scope>
  15. </dependency>
  16. </dependencies>
  17. <build>
  18. <plugins>
  19. <plugin>
  20. <artifactId>maven-assembly-plugin</artifactId>
  21. <version>2.5.3</version>
  22. <executions>
  23. <execution>
  24. <id>make-assembly</id>
  25. <phase>package</phase>
  26. <goals>
  27. <goal>single</goal>
  28. </goals>
  29. <configuration>
  30. <descriptorRefs>
  31. <descriptorRef>jar-with-dependencies</descriptorRef>
  32. </descriptorRefs>
  33. <descriptors>
  34. <!--<descriptor>src/assembly/assembly.xml</descriptor>-->
  35. </descriptors>
  36. </configuration>
  37. </execution>
  38. </executions>
  39. <configuration>
  40. <!-- 最终打包名称 -->
  41. <finalName>as_velocity_10_sampler</finalName>
  42. <appendAssemblyId>false</appendAssemblyId>
  43. </configuration>
  44. </plugin>
  45. </plugins>
  46. </build>

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

JAVA开发

取样器类必须继承 AbstractJavaSamplerClient

  1. public class SimpleSampler extends AbstractJavaSamplerClient {
  2. // 用于设置传入的参数,可以设置多个,已设置的参数会显示到Jmeter参数列表中
  3. // Arguments类表示一组参数对象
  4. public Arguments getDefaultParameters() {
  5. Arguments params = new Arguments();
  6. params.addArgument(HOST, "10.57.32.196");
  7. params.addArgument(PORT, "3000");
  8. return params;
  9. }
  10. // 初始化方法,用于初始化性能测试时的每个线程,实际运行时每个线程仅执行一次
  11. //
  12. // JavaSamplerContext类用于向JavaSamplerClient实现提供上下文信息
  13. // 这当前由在GUI中指定的初始化参数组成,其他数据将来可以通过JavaSamplerContext访问
  14. public void setupTest(JavaSamplerContext context) {
  15. }
  16. // 性能测试时的线程运行体,即测试执行的循环体,根据线程数和循环次数的不同可执行多次
  17. public SampleResult runTest(JavaSamplerContext context) {
  18. return sampleResult;
  19. }
  20. // 测试结束方法,用于结束性能测试中的每个线程,实际运行时,每个线程仅执行一次,在测试方法运行结束后执行
  21. public void teardownTest(JavaSamplerContext context) {
  22. super.teardownTest(context);
  23. }
  24. }

本地测试

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

  1. public class Demo {
  2. public static void main(String[] args) throws NoSuchMethodException, UnsupportedEncodingException {
  3. SimpleSampler jmeter = new SimpleSampler();
  4. Arguments arguments = jmeter.getDefaultParameters();
  5. jmeter.setupTest(new JavaSamplerContext(arguments));
  6. SampleResult sampleResult = jmeter.runTest(new JavaSamplerContext(arguments));
  7. jmeter.teardownTest(new JavaSamplerContext(arguments));
  8. System.out.println(new String(sampleResult.getResponseData(),"utf-8"));
  9. }
  10. }

jmeter集成

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

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

2、重新启动jmeter

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

4、选择自己开发的类

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注