gpt4 book ai didi

java - 配置 maven-failsafe-plugin 以查找不在 src/test/java 中的集成测试

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:51:24 24 4
gpt4 key购买 nike

我的目录结构是这样的:

  • src/integrationTest/java
  • src/test/java
  • src/main/java

我正试图通过故障保护来进行集成测试,但未能按照我希望的方式进行。

我试过这个:

<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.17</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<testSourceDirectory>src/integrationTest/java</testSourceDirectory>
<testClassesDirectory>${project.build.directory}/it-classes</testClassesDirectory>
</configuration>
</plugin>

还有这个:

<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.17</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<includes>
<include>src/integrationTest/**/*.java</include>
</includes>
</configuration>
</plugin>

无济于事; failsafe 找不到要运行的测试。

我已经能够使用 build-helper-maven 插件添加测试源目录,然后故障安全运行测试。

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.9.1</version>
<executions>
<execution>
<id>add-integration-test-source-as-test-sources</id>
<phase>generate-test-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>src/integrationTest/java</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>

但是,现在的问题是 surefire 现在也将测试作为单元测试运行。当故障安全应该能够找到测试时,似乎也没有必要使用另一个插件;我宁愿不需要使用 build-helper maven 插件并配置 surefire 来排除该路径。

我做错了什么?

最佳答案

默认情况下,故障保护仅配置为 include IT*.java、*IT.java 或 *ITCase.java。同时,仅编译来自 src/test/java 的测试源。您需要修改这两种行为。

  1. 使用build-helper-maven-plugin添加src/integationTest/java作为maven-compiler-plugin的测试源> 自动拾取。 (您在上次尝试时已经这样做了。)

  2. 指示 maven-surefire-plugin 排除您的集成测试(参见下面的示例)或仅包含非集成测试(参见 default includes)。

    <
  3. 指示 maven-failsafe-plugin 仅包含您的集成测试而不是默认包含。


<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.17</version>
<configuration>
<excludes>
<exclude>**/*Stuff.java</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.17</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<includes>
<include>**/*Stuff.java</include>
</includes>
</configuration>
</plugin>

事实上,使用 testClassesDirectory 也可能用于限制每个测试插件的范围,但是您必须更改 maven-compiler-plugin 以将类输出到不同的文件夹,也许将它的 test-compile 执行分成两部分,所以也许不值得付出努力。

关于java - 配置 maven-failsafe-plugin 以查找不在 src/test/java 中的集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38398323/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com