首页 > 解决方案 > 在代码中加载 JMeter 测试计划时出现异常

问题描述

我正在尝试使用 - 在 Java 代码中加载 jmx 测试计划(类似于

HashTree testPlanTree = SaveService.loadTree(new File("<path-to-jmx>"));

它适用于基本测试计划,但是,如果我使用任何插件(如 Arrivals Thread 组)加载测试计划,它会引发异常。插件安装在我的本地(jar 存在于 <JMETER_HOME>/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)....

标签: javajmeterjmeter-pluginsjmeter-5.0

解决方案


为了能够以编程方式启动 JMeter 测试,您需要在项目CLASSPATH中拥有所有插件(以及它们的依赖项)

如果由于某种原因您不能拥有所有插件或者它们的数量/性质不是确定性的 - 至少您可以将JMeter Plugins Manager添加到您的项目中,它提供类似getPluginStatus()getAllPluginsStatus()可用于检测已安装插件的功能,请使用TestPlanAnalyzer检查哪些是必需的,等等。

更多信息:命令行插件管理器


推荐阅读