Jmeter中自定义JavaSamplerClient类的编写

Posted Elyzia

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jmeter中自定义JavaSamplerClient类的编写相关的知识,希望对你有一定的参考价值。

自定义的JavaSamplerClient类需要满足以下几个条件:

1、需要把Jmter的ext目录下的ApacheJmeter_core.jar和ApacheJmetere_java.jar 引入到项目中

 

 

 

2、自定义的JavaSamplerClient继承 org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient类

3、实现AbstractJavaSamplerClient类的

/**可选实现的方法**/

public Arguments getDefaultParameters()
public void setupTest(JavaSamplerContext context)
public void teardownTest(JavaSamplerContext context)
/**必需实现的方法**/
publicSampleResult runTest(JavaSamplerContext context)

其中 getDefaultParameters方法、setupTest、teardownTest方法在这个类的实例中只运行一次,runTest方法是每调用一次这个类的实例就执行一次这个方法,所以
在runTest方法中需要重新获取传入的参数,项目中遇到的一个问题就是自定义的JavaSamplerClient类里的参数只能在第一次才能传入参数正确,后来传入的参数都不能被正确地使用,经过排查原因就在于只在setupTest中获取了参数,在runTest方法中没有再次获取参数,这样就导致runTest中使用的仍是初始值,而不是新传入的参数。
 
为了验证上面叙述的正确性,我在setupTest、teardownTest、runTest方法中,都加了log,同时我在jmeter的一个线程中重复3次调用这个自定义的JavaSamplerClient类的实例,查看结果如何。
(1)在setupTest、teardownTest、runTest方法中,增加打印log的语句

 

 

(2)自定义的JavaSamplerClient类实例,被循环调用3次的日志输出如下,从日志可以看出,setupTest在线程开始创建自定义类的实例被调用时,循环的过程中只调用runTest方法,线程中该实例被销毁时才调用teardownTest方法

 

 4、代码写好以后,需要打成jar包放到jmeter的lib目录下,如果编写的自定义类用到了三方的jar包,那么在maven项目的pom.xml文件中,引入maven-jar-plugin插件,这样生成的jar的manifest文件就包含引用三方的jar包路径,同时手动把引用的三方jar包放入到jmeter的相应目录下,就能正确地引用三方jar包了。

5、在jmeter脚本中正确地找到该方法,输入参数,就可以使用了。

 

 

 

 

 

 

以上是关于Jmeter中自定义JavaSamplerClient类的编写的主要内容,如果未能解决你的问题,请参考以下文章

如何在Android中自定义动画

ListView 中自定义 ArrayAdapter 的自定义过滤

Android中自定义Dialog样式

在 Android 中自定义 Google SignInButton

在android中自定义表格布局

如何在 Qt 中自定义列表视图