我编写了一个用于JMeter的Java类,将该项目打包为.jar文件,并将该文件移动到jmeter目录中的lib / ext文件夹中。我已经看到了如何继续进行的文档,但是它们给出了相互矛盾的答案。
第一种方法是使用BeanShell Sampler导入我的包和类,创建类的对象并以这种方式运行方法。我使用此方法使用的示例类具有比我想要运行的类更简单的文件结构。示例类使用以下BeanShell脚本。
import tools.JmeterTools;
JmeterTools jt = new JmeterTools();
jt.foo();
当我尝试将此方法用于我想要运行的类时,它声明变量声明是一个错误,并且无法找到Class。我认为这是因为我不明白要导入什么,因为我的项目中的文件结构有点奇怪。
第二个使用BeanShell PreProcessor将jar添加到类路径。这种方法我根本无法开始工作,但已经阅读了许多其他人发现成功的说法。它的工作原理如下:
addClassPath("directory path to jar\lib\ext\foo.jar");
JMeterTest jtm = new JMeterTest();
jmt.test();
是否有人知道哪种方式可以更好地工作或有关如何修复导入的任何想法?
我在BeanShell脚本中使用的导入如下:
import client.JMeterTest;
我班级顶部的包装行如下
import com.x.foo.client;
答案 0 :(得分:2)
您需要将您的jar文件放在JMETER_HOME/lib
文件夹中。
lib/ext
适用于JMeter扩展/插件等。
放置jar后,可能需要重新启动JMeter。
答案 1 :(得分:1)
在满足以下前提条件的情况下,从Beanshell运行外部类应该可以正常工作
您需要提供完整的包名称以及用于导入的完整类名称(或通配符)。
无论
import com.x.foo.client.JMeterTest;
或
import com.x.foo.client.*;
最后建议使用JSR223 Sampler并使用“groovy”作为语言。 Beanshell解释器具有严重的性能问题,因此将其用于非常“轻松”的变量,如变量修改,将变量转换为属性等。为了生成实际负载,使用JSR223和groovy,因为它实现了Compilable接口,因此您可以实现类似于本机Java的性能码。有关详细说明,基准测试以及有关安装groovy脚本引擎支持的说明,请参阅Beanshell vs JSR223 vs Java JMeter Scripting: The Performance-Off You've Been Waiting For!指南。
答案 2 :(得分:1)
对于将来遇到此问题的任何人。其他人给出的答案是正确的。它不适合我,因为我忘记了Maven在制作jar时不会在测试目录中打包文件。
如果将来有人这样做,此链接可能会有所帮助。 Generate test-jar along with jar file in test package