gpt4 book ai didi

java - 具有多模块项目的 JUnit 类别 - 无法加载类别

转载 作者:行者123 更新时间:2023-11-28 20:22:13 25 4
gpt4 key购买 nike

我想包含/排除 JUnit 分类测试。我在一个公共(public)模块中定义了一个标记接口(interface) StressTest。我在模块 A 中引用了 StressTest。我在根 pom.xml

中有以下 maven-surefire-plugin
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20</version>
<configuration>
<excludedGroups>com.mycompany.project.common.utils.StressTest</excludedGroups>
</configuration>
</plugin>

运行 mvn test 时,我在构建另一个模块时得到以下信息。

Unable to load category: com.mycompany.project.common.utils.StressTest

我应该在哪里编写我的 StressTest 接口(interface)?

最佳答案

为了让 surefire 能够“找到”您的 @Category class 它必须位于从 Maven 项目的依赖树生成的类路径中。

这个异常...

Unable to load category: com.mycompany.project.common.utils.StressTest

... 强烈暗示任何 Artifact 包含 com.mycompany.project.common.utils.StressTest 不是您的 moduleA 的已声明依赖项.

因此,您需要添加对包含 com.mycompany.project.common.utils.StressTest 的任何 Artifact 的依赖项给你的moduleA .如果此依赖项的唯一目的是提供 @Category类,那么将此依赖项测试限定在范围内是有意义的,例如

<dependency>
<groupId>com.mycompany</groupId>
<artifactId>common.utils</artifactId>
<version>...</version>
<scope>test</scope>
</dependency>

此外,如果com.mycompany.project.common.utils.StressTest位于 test 树中而不是 ma​​in 树中的公共(public) utils 模块,那么您将需要创建一个包含公共(public) utils 模块测试类的 JAR。您可以通过添加以下内容来执行此操作 maven-jar-plugin对公共(public)实用程序的 pom.xml 的声明:

  <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>

然后您将依赖于此使用 <type>test-jar</type>在你的依赖中 moduleA ,例如:

<dependency>
<groupId>com.mycompany</groupId>
<artifactId>common.utils</artifactId>
<version>...</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>

关于java - 具有多模块项目的 JUnit 类别 - 无法加载类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46675957/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com