我的目录结构是这样的:
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插件添加测试源目录,然后failafe运行测试。
<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来排除该路径。
我究竟做错了什么?
默认情况下,failsafe配置为仅include IT * .java,* IT.java或* ITCase.java。与此同时,只汇编了来自src/test/java
的测试源。您需要修改这两种行为。
build-helper-maven-plugin
添加src/integationTest/java
作为maven-compiler-plugin
的测试源自动拾取。 (你已经在上一次尝试中完成了这项工作。)maven-surefire-plugin
以排除您的集成测试(请参阅下面的示例)或仅包含非集成测试(请参阅default includes)。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
执行分成两个,所以也许它不值得努力。