通过Java调用JMeter执行测试出现Conversion Error,缺失哪些依赖?
问题原因
报错核心是测试计划my.jmx中使用了JSON后置处理器(JSONPostProcessor),但你的Java项目依赖中没有引入该组件对应的jar包,导致加载jmx文件时XStream无法解析对应类,最终testPlanTree加载为null。
需要补充的依赖(以Maven为例,版本需和你使用的JMeter 5.4.1完全匹配)
<!-- 包含JSONPostProcessor等JMeter内置组件 --> <dependency> <groupId>org.apache.jmeter</groupId> <artifactId>ApacheJMeter_components</artifactId> <version>5.4.1</version> <scope>test</scope> </dependency> <!-- JSONPath解析依赖 --> <dependency> <groupId>com.jayway.jsonpath</groupId> <artifactId>json-path</artifactId> <version>2.6.0</version> <scope>test</scope> </dependency>
额外注意的代码错误
你现有代码中加载JMeter配置的路径有误:
// 错误写法,你加载的是自己的测试类文件,不是JMeter配置文件 JMeterUtils.loadJMeterProperties("src/test/java/com/tests/JMeterTests.java");
需要改为加载JMeter安装路径下的bin/jmeter.properties文件,或者你项目中单独存放的JMeter配置文件路径,比如:
JMeterUtils.loadJMeterProperties("/usr/local/Cellar/jmeter/5.4.1/bin/jmeter.properties");
其他排查建议
如果后续还出现同类CannotResolveClassException报错,直接看报错信息里的缺失类名:
- 如果是
org.apache.jmeter开头的内置组件类,引入对应ApacheJMeter_xxx模块依赖即可,比如用到HTTP请求就引入ApacheJMeter_http - 如果是第三方插件类,引入对应JMeter插件的依赖即可
内容的提问来源于stack exchange,提问作者Andres Holguin
相关产品推荐
相关产品推荐

