网上已有文章介绍如何自定义javaTest
http://blog.csdn.net/luozhuwang/article/details/51882063
现从源码角度解析:
创建一个类并实现JavaSamplerClient接口或继承AbstractJavaSamplerClient,并重写;
public Arguments getDefaultParameters();
public void setupTest(JavaSamplerContext arg0):
public SampleResult runTest(JavaSamplerContext arg0):
public void teardownTest(JavaSamplerContext arg0):
1、实现public Arguments getDefaultParameters()的作用:
在getDefaultParameters中设置的值用于在界面中显示,每次下拉选择classname时触发重新加载操作。(当修改了最初的设置后,再次重新选择classname会重新加载原始值getDefaultParameters获得的值)
当修改了设置保存后,对应的jmx文件中的内容会修改。再次用jemter打开保存的jmx文件,会从jmx中反序列化出JavaSampler,并从JavaSampler中读取参数设置。但是当重新点击【classname】时,又会调用getDefaultParameters方法从我们的自定义类中获取初始参数设置。
下面是jmeter自带的javaTest的例子
2:
public void setupTest(JavaSamplerContext arg0):
public SampleResult runTest(JavaSamplerContext arg0):
执行javaSampler
通过上面的分析,在jmeter界面,通过下拉选择classname触发getDefaultParameters获取我们设置的初始参数及值。
但是我们也可以在jmeter界面增加新的参数key Value值,并保存到jmx文件中。
下次启动jmeter时,从jmx反序列化javaSample时就会包含之前新增的参数值
下方截图中的Arguments args = getArguments()即用于获取jmx反序列化后的javaSampler中的参数值
我们重写setupTest runTest的参数JavaSamplerContext即为下方的context,
jmeter会为我们创建好
context并传给我们覆盖的setupTest runTest方法。
此时context已包含jmx中我们新增的参数设置。
javaClass即为jmeter界面设置的classname