所以我在'resources'文件夹下创建了一个文件夹作为JMeter主页:
我有以下代码来运行JMX文件:
// JMeter Engine
StandardJMeterEngine jmeter = new StandardJMeterEngine();
// Initialize Properties, logging, locale, etc.
File jmeterProperties = new ClassPathResource("/jmeter/JMeterHome/bin/jmeter.properties").getFile();
JMeterUtils.loadJMeterProperties(jmeterProperties.getAbsolutePath());
File jmeterHome = new ClassPathResource("/jmeter/JMeterHome").getFile();
JMeterUtils.setJMeterHome(jmeterHome.getAbsolutePath());
JMeterUtils.initLocale();
// Initialize JMeter SaveService
SaveService.loadProperties();
// Load existing .jmx Test Plan
File jmx = new ClassPathResource("/jmeter/some-test.jmx").getFile();
HashTree testPlanTree = SaveService.loadTree(jmx);
// Run JMeter Test
jmeter.configure(testPlanTree);
jmeter.run();
但是,我得到ClassNotFoundException,这是因为lib文件夹中的jar文件都没有被加载
cause-exception : com.thoughtworks.xstream.mapper.CannotResolveClassException
cause-message : com.tag.jmeter.ext.config.PropertyReader
class : org.apache.jorphan.collections.ListedHashTree
required-type : org.apache.jorphan.collections.ListedHashTree
converter-type : org.apache.jmeter.save.converters.HashTreeConverter
path : /jmeterTestPlan/hashTree/hashTree/com.tag.jmeter.ext.config.PropertyReader
问题是,很多jar文件甚至不在maven repo中,而且它们太多了。将它们包括在类路径中的最佳方法是什么,或者我在这里错过了什么?
我暂时添加了以下依赖项,并且它起作用了,但这不是正确的解决方案:
<dependency>
<groupId>all</groupId>
<artifactId>all</artifactId>
<version>1.1</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/jmeter/JMeterHome/lib/tag-jmeter-extn-1.1.jar</systemPath>
</dependency>
请注意,我正在编写一系列util类来运行jmx文件,这将是一个共享的util项目,可以在其他项目中用作运行其jmx文件的依赖项。
这是我的pom依赖项:
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_java</artifactId>
<version>2.13</version>
<exclusions>
<exclusion>
<artifactId>commons-math3</artifactId>
<groupId>commons-math3</groupId>
</exclusion>
<exclusion>
<artifactId>commons-pool2</artifactId>
<groupId>commons-pool2</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_http</artifactId>
<version>2.13</version>
<exclusions>
<exclusion>
<artifactId>commons-math3</artifactId>
<groupId>commons-math3</groupId>
</exclusion>
<exclusion>
<artifactId>commons-pool2</artifactId>
<groupId>commons-pool2</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_components</artifactId>
<version>2.13</version>
<exclusions>
<exclusion>
<artifactId>commons-math3</artifactId>
<groupId>commons-math3</groupId>
</exclusion>
<exclusion>
<artifactId>commons-pool2</artifactId>
<groupId>commons-pool2</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_config</artifactId>
<version>2.13</version>
<exclusions>
<exclusion>
<artifactId>commons-math3</artifactId>
<groupId>commons-math3</groupId>
</exclusion>
<exclusion>
<artifactId>commons-pool2</artifactId>
<groupId>commons-pool2</groupId>
</exclusion>
</exclusions>
</dependency>
如您所见,我们正在使用JMeter v 2.13,我无法升级,因为有数百个使用此版本编写的jmx,并且目前无法进行升级。
答案 0 :(得分:0)
您遇到的错误是关于缺少JDBC Connection Configuration类的实现,以便能够使用它,您需要添加一个ApacheJMeter_jdbc
依赖项,例如:
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_jdbc</artifactId>
<version>2.13</version>
</dependency>
根据JMeter Best Practices,您暂时应该始终使用最新的JMeter版本,即JMeter 4.0,因此请考虑将“ JMeter”组件的<version>
切换为4.0
< / p>