34

Maven 和集成测试页面上它说:

未来有传言说,除了测试阶段的 src/test/java 之外,未来版本的 Maven 将在集成测试阶段支持类似 src/it/java 的东西。

但那是在 2011 年 12 月 11 日。这已经发生了吗?

“不在默认 src/test/java 文件夹中运行 maven 测试”的答案中,它提到了设置,他们这样做的某种方式只是为了集成测试(即阶段)吗?<testSourceDirectory>integration-test

我正在寻找使用Maven FailSafe 插件并避免重命名一堆集成测试或使用仍处于实验阶段的 JUnit @Categories

4

1 回答 1

34

您可以将 IT 放入不同的文件夹,如下所示:

.
|-- pom.xml
`-- src
    |-- it
    |   `-- java
    |       `-- com
    |           `-- soebes
    |               `-- maui
    |                   `-- it
    |                       `-- BitMaskIT.java
    |-- main
    |   `-- java
    |       `-- com
    |           `-- soebes
    |               `-- maui
    |                   `-- it
    |                       `-- BitMask.java
    `-- test
        `-- java
            `-- com
                `-- soebes
                    `-- maui
                        `-- it
                            `-- BitMaskTest.java

需要以下内容才能使编译器等知道文件夹。

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>build-helper-maven-plugin</artifactId>
  <version>1.5</version>
  <executions>
    <execution>
      <id>add-test-source</id>
      <phase>process-resources</phase>
      <goals>
        <goal>add-test-source</goal>
      </goals>
      <configuration>
        <sources>
          <source>src/it/java</source>
        </sources>
      </configuration>
    </execution>
  </executions>
</plugin>

真正运行 IT 需要以下内容:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-failsafe-plugin</artifactId>
  <version>2.15</version>
  <executions>
    <execution>
      <id>integration-test</id>
      <goals>
        <goal>integration-test</goal>
      </goals>
    </execution>
    <execution>
      <id>verify</id>
      <goals>
        <goal>verify</goal>
      </goals>
    </execution>
  </executions>
</plugin>

这意味着您可以在同一模块中进行集成,但缺点是运行集成测试使用与单元测试相同的资源。更好的解决方案是创建一个单独的 maven 模块,您可以将集成测试放入通常的文件夹src/test/java等中,并且只配置 maven-failsafe-plugin。

于 2013-07-25T18:50:27.843 回答