JUnit测试类未显示在JMeter中


问题内容

我正在尝试使用JMeter
2.7运行JUnit测试。但是,在JUnit采样器的下拉列表中选择测试类时,它们不会显示。正如我发现的那样,这是因为测试类是从AbstractJUnit4SpringContextTests所有测试的另一个类(是基类,中间有各种抽象类,提供便捷方法)扩展而来的。可以选择未从这些基础类扩展的测试类。

包含测试类的JAR文件由Maven(test-jar)创建,包含所有依赖项的JAR由maven fatjar插件创建。这两个罐子都放在JMeter /
lib / junit目录中。

我知道JMeter手册说所有测试类都必须从JUnit测试类扩展,但这似乎只对JUnit3正确。使用JUnit4,JMeter不需要该要求。当然,我可以重写所有测试,以便它们不必从基类扩展,但这将导致巨大的维护问题。那么,如何使用从基类扩展的JMeter执行JUnit测试?

UDPATE 2012-08-09

由于PMD的提示,我现在将依赖项一张一张地复制到JMeter的lib文件夹中,现在GUI显示了我所有的单元测试。在此之前,我不得不自己解决几个问题:

  • 将logkit-1.0.1.jar复制到该文件夹​​会阻止JMeter GUI启动。不知道为什么,没有错误或日志消息。JVM刚刚启动和终止。
  • 这是由Maven依赖项引起的一些版本冲突,这些依赖项引入了较早版本的Spring测试软件包。这导致一些测试类从具有相同名称的较旧的基类扩展而来。排除pom文件中的那些依赖项会有所帮助。

现在,我可以执行我的JUnit测试用例。但是,我班上的几个引用都用注释@Resource。JMeter的Testrunner似乎没有注入那些引用,因为每次访问引用时NullPointerException都会抛出a,如JMeter日志中所示。因此,我如何让JMeter注入那些依赖关系,这甚至可能吗?


问题答案:

您必须像以前一样将junit类放在lib / junit文件夹中,并将依赖项放在lib文件夹中。

您不应该使用fatjar,因为有时这些工具会从meta-inf中删除文件,或者仅保留所有jar中的一个文件,然后在每个jar中弹一个。

在lib文件夹中一个一个地添加所有jar。

检查jmeter日志以查看是否有任何异常。

如果仍然失败,请在jmeter用户列表上提问,如果您没有得到任何答案,请创建一个简单的测试用例并打开一个错误。