我梳理的StackOverflow和许多其他网站,发现有很多其他相关的职位,按照所有说的建议,但最终,失效保护被跳过我的测试。
我的JUnit测试位于:myModule/src/main/test/java/ClientAccessIT.java
我跳过万无一失,因为有这个模块中没有单元测试:
<!-- POM snippet -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
我试图与故障安全运行集成测试:
<!-- POM snippet -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<executions>
<execution>
<id>run-tests</id>
<phase>integration-test</phase>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
然而,当我运行mvn verify
我看到这一点:
[INFO] --- maven-failsafe-plugin:2.14.1:integration-test (run-tests) @ rest-services-test ---
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Results :
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
我花了4个半小时精练,任何帮助,将不胜感激。这可能是值得一提的唯一的另一件事是,我有Cargo建立和拆除Tomcat容器。是否有人看到突出的问题?
您需要重命名您的测试类。
你可以找到的名字插件查找在默认情况下在the documentation,由@acdcjunior指出:
默认情况下,故障安全插件会自动包括与以下通配符模式的所有测试类:
- “
**/IT*.java
” - 包括它的所有子目录,并以“IT”开始所有的Java文件名。- “
**/*IT.java
” - 包括它的所有子目录,并以“IT”结尾的所有Java文件名。- “
**/*ITCase.java
” - 包括它的所有子目录,并以“ITCase”结尾的所有Java文件名。
我有一个类似的问题。如果没有编制针对任何测试类/测试类,然后检查你的POM文件,并确保包装不“POM”。
对于多模块项目,子项目需要有插件声明为其次,
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
</plugin>
从版本父POM继承。如果没有按上述定义,父POM插件还不行。
你的测试是不是在默认的测试源目录的src / test / java下。看到:
https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html
Mymodule中/ SRC /主/测试/ JAVA / ClientAccessIT.java
应该:
Mymodule中/ SRC /测试/ JAVA / ClientAccessIT.java
您也可以更新您的POM文件(如果你真的想测试住在主),包括:
<build>
<testSources>
<testSource>
<directory>src/main/test</directory>
</testSource>
</testSources>
</build>
我也有过类似的问题,但所需要的包装元素是“POM”。确保您的测试源文件被编译并添加到... /目标/测试类文件夹使用Maven的编译器插件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven.compiler.version}</version>
<executions>
<execution>
<phase>test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
我有同样的问题,并尝试了一些这里的建议方案。我正在开发使用JUnit 5.不幸的是,没有我的集成测试(位于src/test/java
与*TestIT.java
后缀)都拿到回升,无论advertising of the plugin的这样做一个春天启动应用程序。我试图downgrading to 2.18.1, 2.19.1,并试图消除双方的<executions>
和<configuration>
部分尝试使用甚至插件的默认功能,但没有运气。
我终于改变了版本为最新(截至截稿时)至2.22.0,和中提琴。这是我加入到我的POM的<build><plugins>
节的配置。更妙的是,我并不需要补充的是定义你看大部分人包括integration-test
和verify
目标处决;故障安全默认情况下执行这些。我包括我的保命插件配置为好,因为我用它在行家生命周期的test
阶段执行单元测试。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version><!--$NO-MVN-MAN-VER$-->
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.22.0</version><!--$NO-MVN-MAN-VER$ -->
</plugin>
而刚刚好措施,告诉万无一失和故障安全to use JUnit 5,我包括这在我的<dependencies>
部分:
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<scope>test</scope>
</dependency>
Eclipse显示一个警告(黄色波浪下划线)版本标记下,因此列入<!--$NO-MVN-MAN-VER$ -->
错误的。我敢肯定有更好的方法来解决这个问题,但在这种情况下,我的作品。
要加快测试此配置,避免不必经过所有test
之前较早的生命周期阶段的,integration-test
orverify
阶段,我用下面的命令来快速验证:
mvn failsafe:integration-test
(仅运行集成测试)mvn surefire:test
(只运行单元测试)希望这可以帮助别人。干杯!
对我来说,这是一个缺少执行部分
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
与https://maven.apache.org/surefire/maven-failsafe-plugin/examples/testng.html TestNG的文档故障安全已经表现出POM没有它,它没有工作。
<plugins>
[...]
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>3.0.0-M3</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
[...]
</plugins>
添加上面显示的缺少执行部分解决了这个问题。
我有几分相似的问题。我的集成测试并没有被拾起。我的项目是一个多模块春天启动的项目。我的错误是,我加入Maven的故障保护,插件在父POM。有许多选项摆弄周围后我把故障保护,插件的模块POM在我的所有的集成测试存在哪些解决我的问题。