我正在尝试使用 JMeter 2.7 运行 JUnit 测试。但是,在 JUnit 采样器的下拉列表中选择测试类时,它们不会显示出来。正如我发现的那样,这是因为测试类是从另一个类(AbstractJUnit4SpringContextTests
是基类,中间的各种抽象类提供便利方法)扩展而来的所有测试。可以选择不是从这些基类扩展的测试类。
包含测试类的 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 刚刚启动和终止。
- 这是一些由 maven 依赖项引起的版本冲突,这些依赖项引入了旧版本的 spring 测试包。这导致一些测试类从具有相同名称的旧基类扩展而来。在 pom 文件中排除这些依赖项会有所帮助。
我现在可以执行我的 JUnit 测试用例了。但是,我的类中的几个引用都用@Resource
. JMeter 的 Testrunner 似乎并没有注入那些引用,因为每次访问引用时都会NullPointerException
抛出 a,这可以在 JMeter 日志中看到。那么,我如何让 JMeter 注入这些依赖项,这可能吗?