我正在尝试使用 JMeter 2.7 运行 JUnit 测试。但是,当在 JUnit 采样器的下拉列表中选择测试类时,它们不会显示。据我发现,这是因为测试类是从另一个类扩展的(AbstractJUnit4SpringContextTests
是基类,中间有各种抽象类,为所有测试提供方便的方法)。可以选择不是从这些基类扩展的测试类。
包含测试类的 JAR 文件由 Maven (test-jar) 创建,包含所有依赖项的 JAR 由 maven fatjar 插件创建。这两个 jar 都放置在 JMeter/lib/junit 目录中。
我知道 JMeter 手册说所有测试类都必须从 JUnit 测试类扩展,但这似乎只适用于 JUnit3。使用 JUnit4,JMeter 不需要这个要求。当然,我可以重写所有测试,以便它们不必从基类扩展,但这会导致巨大的维护问题。那么,如何使用从基类扩展的 JMeter 执行 JUnit 测试呢?
更新2012-08-09
感谢PMD的提示,我现在将依赖项一一复制到JMeter的lib文件夹中,现在GUI显示了我所有的单元测试。在此之前,我必须自己解决几个问题:
- 将 logkit-1.0.1.jar 复制到该文件夹中会导致 JMeter GUI 无法启动。不知道为什么,没有给出错误或日志消息。 JVM 刚刚启动并终止。
- 这是由 Maven 依赖项引起的一些版本冲突,这些依赖项引入了旧版本的 Spring 测试包。这导致一些测试类从具有相同名称的旧基类扩展而来。在 pom 文件中排除这些依赖项会有所帮助。
我现在可以执行我的 JUnit 测试用例。然而,我的课程中的一些参考文献都带有注释@Resource
。 JMeter的Testrunner似乎没有注入这些引用,因为每次访问引用时,都会有一个NullPointerException
被抛出,如 JMeter 日志中所示。那么,我该如何让 JMeter 注入这些依赖项,这可能吗?
您必须像以前一样将 junit 类放入 lib/junit 文件夹中,并将依赖项放入 lib 文件夹中。
您不应该使用 fatjar,因为有时这些工具会从 meta-inf 中删除文件,或者只保留所有 jar 中的一个,spring 在每个 jar 中放入一个。
将所有 jar 一一添加到 lib 文件夹中。
检查jmeter日志,看看是否有异常。
如果仍然失败,请在 jmeter 用户列表上询问问题,如果没有得到任何答案,请创建一个简单的测试用例并打开一个错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)