标签: maven-failsafe-plugin

防止单元测试但允许在Maven中进行集成测试

我有一个Maven构建,我使用SureFire插件来运行一些单元测试,而FailSafe插件则运行一些集成测试.我想要一种方法来运行FailSafe插件的测试.

对于我来说,在pom中添加不同的配置文件或任何东西并不是一个好的解决方案,因为它是一个多模块构建,我不想编辑每个模块的pom.

skip.testsmaven.test.skipskipTests它停止所有的测试,以及skipITs,其仅停止故障安全插件.

那么,Maven是否有一个命令行标志skipITs,而是具有"onlyITs"的功能?

integration-testing build maven maven-surefire-plugin maven-failsafe-plugin

138
推荐指数
5
解决办法
5万
查看次数

Maven Surefire和Maven Failsafe插件有什么区别?

Maven Surefire和Maven Failsafe插件有什么区别?

我在网上搜索但没有得到答案.

请有人帮助这个例子.

maven maven-surefire-plugin maven-failsafe-plugin

95
推荐指数
3
解决办法
3万
查看次数

如何在maven安装目标中跳过测试,同时在maven测试目标中运行它们?

我有一个多模块maven项目,在同一个文件夹(src/test/java)中集成了单元测试.集成测试标有@Category(IntegrationTest.class).我想最终得到以下设置:

  1. 如果我运行mvn install,我想要编译所有测试,但我不想执行任何测试.
  2. 如果我运行mvn test,我想要编译所有测试,但只执行单元测试.
  3. 如果我运行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

56
推荐指数
5
解决办法
7万
查看次数

Maven故障安全不执行测试

我已经梳理了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容器.有没有人看到明显的问题?

java maven maven-failsafe-plugin

33
推荐指数
7
解决办法
2万
查看次数

Maven FailSafe插件的好处

我读过Maven Failsafe插件是专门为运行集成测试而设计的.目前我正在开发一个多模块项目,集成测试在自己独立的模块中,用TestNg编写并使用Surefire插件运行.我们没有与单元测试冲突,因为只有集成测试在该模块的测试阶段运行.要在测试之前设置环境,并在运行测试后进行清理,@BeforeSuite @AfterSuite请使用TestNg注释.因此,不需要使用Failsafe插件使用的pre-integration-test阶段,integration-test阶段,post-integration-test阶段.

  • 通过不使用Failsafe插件,我有没有更多的好处?
  • 有没有更好的方法来使用Failsafe插件来完成我当前的要求?
  • 我可以做我的服务器启动,关闭,文件在解压缩等pre-integration-test,post-integration-test阶段无需编写Maven插件?

testng integration-testing maven maven-surefire-plugin maven-failsafe-plugin

30
推荐指数
2
解决办法
9286
查看次数

将集成和单元测试报告与JaCoCo合并

我正在使用maven与JaCoCo插件生成failafe和surefire报告,但我只能设法将它们放在单独的报告中.我想有一个整体覆盖视图(单元测试和集成测试之间的合并).

在我认为彻底的谷歌搜索之后,我只能找到一种方法来与Sonar一起做.有没有更简单的方法来做到这一点?

相关问题:Maven分离单元测试和集成测试

code-coverage maven maven-surefire-plugin maven-failsafe-plugin jacoco

28
推荐指数
3
解决办法
1万
查看次数

Maven分开单元测试和集成测试

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)
  1. 编译:

    <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)
  2. 单元测试:

    <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)
  3. 整合测试:

    <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

27
推荐指数
1
解决办法
1万
查看次数

在Maven中,是否可以将集成测试保存在单元测试的单独文件夹中?

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.

integration-testing maven maven-failsafe-plugin

23
推荐指数
1
解决办法
6196
查看次数

maven-failsafe-plugin错误和构建成功?

我的问题非常类似于: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 maven-failsafe-plugin

17
推荐指数
2
解决办法
1万
查看次数

Maven Failsafe插件:如何使用集成前和集成后测试阶段

我不完全清楚如何最好地使用Maven Failsafe插件进行集成测试.我的用例是针对本地MySQL数据库测试SQL查询.

我知道数据库应该在pre-integration-test阶段期间启动,并在关闭期间关闭post-integration-test.但是我该如何指定呢?我应该在我的pom.xml中放一个命令行吗?或者我应该使用特定注释进行注释的方法?

java integration-testing maven maven-failsafe-plugin

14
推荐指数
1
解决办法
9162
查看次数