Maven failsafe插件不会运行使用JUnit类别注释的测试类

时间:2013-05-28 11:08:47

标签: 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>
        <groups>acme.test.IntegrationTest</groups>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>integration-test</goal>
            </goals>
        </execution>
    </executions>
</plugin>

如果我然后创建像这样的集成测试

@Category(IntegrationTest.class)
public class ExampleClassIntegrationTest {

@Test
public void slow_and_painful_test() {

此测试不会运行。

但是,如果我根据Inclusions and Exclusions of Tests

命名该课程
**/IT*.java
**/*IT.java
**/*ITCase.java

像这样:

@Category(IntegrationTest.class)
public class ExampleClassIT {

@Test
public void slow_and_painful_test() {

测试运行正常。为什么我必须命名测试并在使用groups-tag时有注释?我错过了什么吗?使用JUnit的documentation表示您可以在类级别使用Category注释。

2 个答案:

答案 0 :(得分:8)

多数民众赞成因为这些是默认安全插件包含在执行时包含的java类。 但是,您可以在带有标签的pom中骑过这个: E.g

<includes>
<include>**/*.java</include>
</includes>

包含所有java文件。

答案 1 :(得分:0)

您应该将JUnit添加为已经完成的依赖项(> 4.8),或者特别将以下内容添加到您的failsafe-plugin配置中:

<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>

但我认为它不会改变这种情况。