我想包含/排除JUnit分类的测试。我在通用模块中定义了标记接口StressTest
。我在moduleA中引用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测试时,在构建另一个模块时得到以下信息。
Unable to load category: com.mycompany.project.common.utils.StressTest
我应该在哪里编写我的
StressTest
接口? 最佳答案
为了使surefire能“找到”您的@Category
类,它必须位于从Maven项目的依赖树生成的类路径中。
这个例外...
无法加载类别:com.mycompany.project.common.utils.StressTest
...强烈暗示任何工件包含com.mycompany.project.common.utils.StressTest
都不是您的moduleA
的声明依赖项。
因此,您需要在com.mycompany.project.common.utils.StressTest
上添加对包含moduleA
的任何工件的依赖。如果此依赖项的唯一目的是提供@Category
类,则使此依赖项测试的作用域例如
<dependency>
<groupId>com.mycompany</groupId>
<artifactId>common.utils</artifactId>
<version>...</version>
<scope>test</scope>
</dependency>
此外,如果
com.mycompany.project.common.utils.StressTest
位于测试树中,而不是公共utils模块中的主树中,那么您将需要创建一个包含公共utils模块的测试类的JAR。您可以通过在公用程序的pom.xml中添加以下maven-jar-plugin
声明来做到这一点: <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>