我的目录结构是这样的:
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>
无济于事;故障安全找不到要运行的测试。
我已经能够使用 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 http://maven.apache.org/surefire/maven-failsafe-plugin/integration-test-mojo.html#includesIT*.java、*IT.java 或 *ITCase.java。同时,仅测试来自src/test/java
被编译。您需要修改这两种行为。
Use build-helper-maven-plugin
to add src/integationTest/java
作为测试源maven-compiler-plugin
自动拾取。 (您在上次尝试中已经完成了此操作。)
Direct maven-surefire-plugin
排除集成测试(参见下面的示例)或仅包含非集成测试(参见默认包括 https://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html#includes).
Direct 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
执行分为两部分,所以也许不值得付出努力。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)