在代码中加载 JMeter 测试计划时出现异常

Exception while loading JMeter test plan in code

我正在尝试使用 -

在 Java 代码(类似于 this)中加载 jmx 测试计划
HashTree testPlanTree = SaveService.loadTree(new File("<path-to-jmx>"));

它适用于基本测试计划,但如果我使用任何插件(如 Arrivals Thread 组)加载测试计划,它会抛出异常。插件安装在我的本地(罐子存在于 /lib/ext/ 中)并且测试计划通过 jmeter 运行良好。

  1. 我们是否需要为代码配置一些东西来检测测试计划中的插件并防止此错误?
  2. 我们能否直接使用任何 api 从测试计划安装插件以成功加载或至少获取测试计划使用的插件名称?

异常我得到 -

...Exception in thread "main" java.lang.IllegalArgumentException: Problem loading XML from:'<path-to-jmx>'.
Cause:
CannotResolveClassException: com.blazemeter.jmeter.threads.arrivals.ArrivalsThreadGroup

 Detail:com.thoughtworks.xstream.converters.ConversionException:
---- Debugging information ----
cause-exception     : com.thoughtworks.xstream.converters.ConversionException
cause-message       :
first-jmeter-class  : org.apache.jmeter.save.converters.HashTreeConverter.unmarshal(HashTreeConverter.java:66)
class               : org.apache.jmeter.save.ScriptWrapper
required-type       : org.apache.jmeter.save.ScriptWrapper
converter-type      : org.apache.jmeter.save.ScriptWrapperConverter
path                : /jmeterTestPlan/hashTree/hashTree/com.blazemeter.jmeter.threads.arrivals.ArrivalsThreadGroup
line number         : 64
version             : 5.3
-------------------------------
        at org.apache.jmeter.save.SaveService.readTree(SaveService.java:458)
        at org.apache.jmeter.save.SaveService.loadTree(SaveService.java:431)....

你确定你没有缺少插件的依赖项,例如:

  • jmeter-plugins-cmn-jmeter-0.6.jar

如果没有,请显示完整的 jmeter.log 文件

为了能够以编程方式启动 JMeter 测试,您需要拥有所有插件(以及它们的 dependencies) in your project CLASSPATH

如果由于某种原因您不能拥有所有插件或它们的 number/nature 不是确定性的 - 至少您可以添加 JMeter Plugins Manager to your project, it provides functions like getPluginStatus() or getAllPluginsStatus() which you can use for detection of installed plugins, use TestPlanAnalyzer 来检查哪些是必需的,等等。

更多信息:Plugins Manager from Command-Line