4

我有一个这样的界面:

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() {

此测试将不会运行。

但是,如果我根据测试的包含和排除来命名该类

**/IT*.java
**/*IT.java
**/*ITCase.java

像这样:

@Category(IntegrationTest.class)
public class ExampleClassIT {

@Test
public void slow_and_painful_test() {

测试运行良好。为什么我在使用组标签时必须为测试命名并带有注释?我错过了什么吗?使用 JUnit的文档指出您可以在类级别使用 Category 注释。

4

2 回答 2

9

那是因为这些是故障安全插件在执行时包含的默认 java 类。但是,您可以在 pom 中使用标签覆盖它:例如

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

包括所有的java文件。

于 2013-06-24T13:22:44.260 回答
0

您应该将 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>

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

于 2013-05-28T12:31:31.173 回答