2012-07-27 65 views
6

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

包含测试类的JAR文件由Maven(test-jar)创建,包含所有依赖项的JAR由maven fatjar插件创建。这两个jar都放在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刚刚启动并终止。
  • 由于引入了老版本的spring测试包的maven dependencies导致了一些版本冲突。这导致一些测试类从具有相同名称的旧基类中扩展而来。排除pom文件中的这些依赖关系有所帮助。

我现在可以执行我的JUnit测试用例。但是,我的课程中的几个参考文献注释了@Resource。 JMeter的Testrunner似乎没有注入这些引用,因为每次访问引用时,都会引发NullPointerException,正如在JMeter日志中可以看到的那样。那么,我如何让JMeter注入这些依赖关系,这甚至有可能吗?

+0

@资源通常在上下文初始化期间由spring解释。在这种情况下,我应该深入调查你的代码,也许你应该看看spring test case如何初始化自己,或者你可以尝试重写setup方法来手动注入资源。顺便说一下,如果我的回答是正确的,你应该将其标记为如此,也许会打开另一个问题,而不是改变最初的问题,这就是SO的工作原理。 – 2012-08-10 12:35:21

+0

@Teinacher你找到了解决方案吗?我有同样的,不知道如何解决它 – javagirl 2013-06-26 12:27:24

回答

4

您必须将您的junit类放在lib/junit文件夹中,就像在lib文件夹中放置依赖项一样。

你不应该从META-INF因为有时使用fatjar这些工具删除的文件或只留一个从所有罐子在其每个罐子,春天放一个。

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

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

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

1

您是否检查过JUnit采样器必须搜索v4测试的选项?

JMeter option to search for JUnit 4 annotations

我试过这个工程我已经使用JUnit 4中创建一个简单的项目,它过滤只能用@Test注释甚至是那些类测试不会扩展TestCase类。

-1

正如Teinacher所写,JUnit测试将显示在JMeter 之后将所有项目依赖项(所有.jar文件)复制到JMeter的/ lib目录(需要JMeter重启)。

+0

当答案被接受和正确的时候,不需要添加一个只会混淆新读者的重复问题。 – 2017-08-21 08:07:47