我有一个Maven构建,我使用SureFire插件来运行一些单元测试,而FailSafe插件则运行一些集成测试.我想要一种方法来运行FailSafe插件的测试.
对于我来说,在pom中添加不同的配置文件或任何东西并不是一个好的解决方案,因为它是一个多模块构建,我不想编辑每个模块的pom.
有skip.tests和maven.test.skip和skipTests它停止所有的测试,以及skipITs,其仅停止故障安全插件.
那么,Maven是否有一个命令行标志skipITs,而是具有"onlyITs"的功能?
integration-testing build maven maven-surefire-plugin maven-failsafe-plugin
Maven Surefire和Maven Failsafe插件有什么区别?
我在网上搜索但没有得到答案.
请有人帮助这个例子.
我有一个多模块maven项目,在同一个文件夹(src/test/java)中集成了单元测试.集成测试标有@Category(IntegrationTest.class).我想最终得到以下设置:
mvn install,我想要编译所有测试,但我不想执行任何测试.mvn test,我想要编译所有测试,但只执行单元测试.mvn integration-test,我想编译并执行所有测试.重要的一点是,我希望在pom.xml没有任何额外命令行参数的情况下配置它.
目前我在我的父pom.xml中提出了以下设置,其中唯一的问题是#1,其中执行所有测试:
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${project.java.version}</source>
<target>${project.java.version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.14.1</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit47</artifactId>
<version>2.14.1</version>
</dependency>
</dependencies>
<configuration>
<includes>
<include>**/*.class</include>
</includes>
<excludedGroups>cz.cuni.xrg.intlib.commons.IntegrationTest</excludedGroups>
</configuration>
</plugin>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.14.1</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit47</artifactId>
<version>2.14.1</version>
</dependency>
</dependencies>
<configuration>
<groups>cz.cuni.xrg.intlib.commons.IntegrationTest</groups>
</configuration>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<includes>
<include>**/*.class</include>
</includes>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
Run Code Online (Sandbox Code Playgroud)
所有子模块在他们的pom.xml中都有以下插件配置,我认为它应该从父pom继承:
<build> …Run Code Online (Sandbox Code Playgroud) integration-testing maven maven-surefire-plugin maven-failsafe-plugin
我已经梳理了StackOverflow和许多其他网站,发现了许多其他相关的帖子,并且已经遵循了所有的建议,但最终,故障安全正在跳过我的测试.
我的JUnit测试位于:
myModule/src/main/test/java/ClientAccessIT.java
我正在跳过surefire,因为这个模块中没有单元测试:
<!-- POM snippet -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用failsafe运行集成测试:
<!-- 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>
Run Code Online (Sandbox Code Playgroud)
但是,当我跑步时,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
Run Code Online (Sandbox Code Playgroud)
我花了最后4个半小时的冲刷,任何帮助将不胜感激.唯一可能值得一提的是我有Cargo设置并拆除Tomcat容器.有没有人看到明显的问题?
我读过Maven Failsafe插件是专门为运行集成测试而设计的.目前我正在开发一个多模块项目,集成测试在自己独立的模块中,用TestNg编写并使用Surefire插件运行.我们没有与单元测试冲突,因为只有集成测试在该模块的测试阶段运行.要在测试之前设置环境,并在运行测试后进行清理,@BeforeSuite @AfterSuite请使用TestNg注释.因此,不需要使用Failsafe插件使用的pre-integration-test阶段,integration-test阶段,post-integration-test阶段.
pre-integration-test,post-integration-test阶段无需编写Maven插件?testng integration-testing maven maven-surefire-plugin maven-failsafe-plugin
我正在使用maven与JaCoCo插件生成failafe和surefire报告,但我只能设法将它们放在单独的报告中.我想有一个整体覆盖视图(单元测试和集成测试之间的合并).
在我认为彻底的谷歌搜索之后,我只能找到一种方法来与Sonar一起做.有没有更简单的方法来做到这一点?
相关问题:Maven分离单元测试和集成测试
code-coverage maven maven-surefire-plugin maven-failsafe-plugin jacoco
UT =单元测试IT =集成测试.我的所有Integration测试类都使用@Category(IntegrationTest.class)注释
我的目标是:
mvn clean install =>运行UT而不是IT
mvn clean install -DskipTests = true =>不执行任何测试
mvn clean deploy =>运行UT而不是IT
mvn clean test =>运行UT而不是IT
mvn clean verify =>运行UT和IT
mvn clean integration-test =>运行IT并且不执行UT
mvn clean install deploy =>运行UT而不是IT
pom属性:
<junit.version>4.12</junit.version>
<surefire-plugin.version>2.18.1</surefire-plugin.version>
<failsafe-plugin.version>2.18.1</failsafe-plugin.version>
Run Code Online (Sandbox Code Playgroud)
编译:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<compilerArgument>-Xlint:all</compilerArgument>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)单元测试:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire-plugin.version}</version>
<configuration>
<excludedGroups>com.xpto.IntegrationTest</excludedGroups>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)整合测试:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>${failsafe-plugin.version}</version>
<configuration>
<groups>com.xpto.IntegrationTest</groups>
</configuration>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
</goals>
<configuration>
<includes>
<include>**/*.class</include>
</includes>
</configuration> …Run Code Online (Sandbox Code Playgroud)integration-testing maven maven-surefire-plugin maven-failsafe-plugin
在Maven和Integration Testing页面上,它说:
Future Rumor认为,除了测试阶段的src/test/java之外,Maven的未来版本将在集成测试阶段支持src/it/java之类的东西.
但那是在2011-12-11.这件事发生了吗?
在这个回答到"不违约的src /测试/ java文件夹运行Maven测试"它提到设置<testSourceDirectory>,是他们这样做只是为了集成测试(即在某种方式integration-test相)?
我正在寻找使用Maven FailSafe插件,并避免重命名一堆集成测试或使用仍然实验性的JUnit @Categories.
我的问题非常类似于:maven-failsafe-plugin失败和构建成功?
如果测试失败,我设法将failafe插件设置为失败.
但是如果测试进入错误状态,failafe插件仍然不会破坏构建.
.................
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running xxxxx.IntegrationTierFunctionalTestCase
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.054 sec <<< FAILURE!
Results :
Tests in error:
testException(xxxxx.IntegrationTierFunctionalTestCas
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0
[WARNING] File encoding has not been set, using platform encoding Cp1252, i.e. build is
[INFO] [failsafe:verify {execution: functional-test-1024}]
[INFO] Failsafe report directory: C:\projects\oec-integration-server\trunk\oec-integrati
[WARNING] File encoding has not been set, using platform encoding Cp1252, i.e. build …Run Code Online (Sandbox Code Playgroud) 我不完全清楚如何最好地使用Maven Failsafe插件进行集成测试.我的用例是针对本地MySQL数据库测试SQL查询.
我知道数据库应该在pre-integration-test阶段期间启动,并在关闭期间关闭post-integration-test.但是我该如何指定呢?我应该在我的pom.xml中放一个命令行吗?或者我应该使用特定注释进行注释的方法?