6

我正在尝试使用 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 注入这些依赖项,这可能吗?

4

4 回答 4

4

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

您不应该使用 fatjar,因为有时这些工具会从 meta-inf 中删除文件,或者只从所有 jars 中保留一个文件,spring pûts 在每个 jars 中添加一个文件。

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

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

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

于 2012-08-06T13:10:40.943 回答
2

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

用于搜索 JUnit 4 注释的 JMeter 选项

我已经尝试过,这适用于我使用 JUnit 4 创建的一个简单项目,它仅过滤带有 @Test 注释的测试,即使这些类不扩展 TestCase 类。

于 2012-08-06T11:49:11.957 回答
0

使用 Jmeter 4.0,您可以通过“user.classpath”属性指定依赖项位置的路径,而不是将依赖项放在 JMeter 的 lib 文件夹中。此属性位于 JMeter 安装的 /bin 文件夹下的“user.properties”文件中。

路径项可以是 jar 文件或目录。此类目录中的任何 jar 文件都将自动包含在内,子目录中的 jar 文件将被忽略。

添加路径时请注意并使用您的平台路径分隔符(Java 中的 java.io.File.separatorChar)来分隔多个路径:

#Example for windows (; separator)
#user.classpath=../classes;../lib;../app1/jar1.jar;../app2/jar2.jar

#Example for linux (:separator)
#user.classpath=../classes:../lib:../app1/jar1.jar:../app2/jar2.jar

user.classpath=C:/git/adf-bpm-autotesting-tool/libs;C:/git/adf-bpm-autotesting-tool/libs/selenium-tools;C:/git/adf-bpm-autotesting-tool/libs/selenium-2.52.0;C:/git/adf-bpm-autotesting-tool/libs/selenium-2.52.0/libs

作为 jmeter gui 启动时的正确结果,您将在 jmeter.log 记录中看到如下所示:

2019-04-08 18:51:46,871 INFO o.a.j.JMeter: Adding to classpath and loader: C:/git/adf-bpm-autotesting-tool/libs
2019-04-08 18:51:46,872 INFO o.a.j.JMeter: Adding to classpath and loader: C:/git/adf-bpm-autotesting-tool/libs/selenium-tools
2019-04-08 18:51:46,873 INFO o.a.j.JMeter: Adding to classpath and loader: C:/git/adf-bpm-autotesting-tool/libs/selenium-2.52.0
2019-04-08 18:51:46,873 INFO o.a.j.JMeter: Adding to classpath and loader: C:/git/adf-bpm-autotesting-tool/libs/selenium-2.52.0/libs

之后在 JUnit Request Sample 中,您将找到所有的 junit 测试。

于 2019-04-08T15:57:33.420 回答
-1

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

于 2014-01-20T10:19:30.677 回答