Maven failsafe插件不会运行带有JUnit类别注释的测试类
我有这样一个界面:Maven failsafe插件不会运行带有JUnit类别注释的测试类,maven,junit,maven-failsafe-plugin,Maven,Junit,Maven Failsafe Plugin,我有这样一个界面: public interface IntegrationTest { } <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-failsafe-plugin</artifactId> <version>2.14</version> <configuration&g
public interface IntegrationTest {
}
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.14</version>
<configuration>
<groups>acme.test.IntegrationTest</groups>
</configuration>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
</goals>
</execution>
</executions>
</plugin>
我像这样配置故障保护插件:
public interface IntegrationTest {
}
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.14</version>
<configuration>
<groups>acme.test.IntegrationTest</groups>
</configuration>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
</goals>
</execution>
</executions>
</plugin>
此测试将不运行
但是,如果我根据
像这样:
@Category(IntegrationTest.class)
public class ExampleClassIT {
@Test
public void slow_and_painful_test() {
测试运行良好。为什么在使用groups标记时必须命名测试并添加注释?我错过什么了吗?on using JUnit声明您可以在类级别使用类别注释。您应该将JUnit添加为已完成的依赖项(>4.8),或者特别是将以下内容添加到故障保护插件配置中:
<plugins>
[...]
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.14.1</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit47</artifactId>
<version>2.14.1</version>
</dependency>
</dependencies>
</plugin>
[...]
</plugins>
[...]
org.apache.maven.plugins
maven故障保护插件
2.14.1
org.apache.maven.surefire
surefire-junit47
2.14.1
[...]
但我认为它不会改变这种情况。这是因为这些是默认的java类,在执行时,fail-safe插件包括这些类。 但是,您可以在pom中使用以下标签克服此问题: 例如
**/*.爪哇
包含所有java文件。区分单元测试和集成测试只是基于命名约定,因此不需要在JUnit中使用组(除了不是集成测试的最佳选择)。@khmarbaise我不同意,类别是一种很好的方法,可以在不受命名约定限制的情况下组织使用测试。这就是为什么JUnit添加了它们,以及为什么各种Maven插件都支持它们。您是否尝试过排除该类别?你需要两者还是完全忽略了这个类别?你的项目中包含了什么版本的JUnit?这与这个问题类似,但插件版本不同:我已经有了JUnit4.10作为依赖项。您是正确的,更改版本并添加surefire-junit47依赖项并没有解决问题。
<includes>
<include>**/*.java</include>
</includes>