首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >maven-failsafe-plugin错误和构建成功?

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

Stack Overflow用户
提问于 2013-05-29 01:01:52
回答 4查看 17.8K关注 0票数 26

我的问题和这个非常相似:maven-failsafe-plugin Failures and BUILD SUCCESS?

如果测试失败,我会设法设置failsafe插件失败。

但是如果测试进入错误状态,故障安全插件仍然不会破坏构建。

代码语言:javascript
复制
.................
-------------------------------------------------------
   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 is
[INFO] [failsafe:integration-test {execution: functional-test-24}]
[INFO] Failsafe report directory: C:\projects\oec-integration-server\trunk\oec-integrati
.............
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 58 seconds
[INFO] Finished at: Tue May 28 17:48:13 BST 2013
[INFO] Final Memory: 114M/781M
[INFO] ------------------------------------------------------------------------

对于简单的IntegrationTierFunctionalTestCase,只包含以下代码

代码语言:javascript
复制
import org.junit.Test;
import static org.junit.Assert.fail;
public class IntegrationTierFunctionalTestCase 
{

    @Test
    public void testException(){
        //fail();
        throw new RuntimeException("super error");
    }
}

如果我取消对fail()的注释,整个构建都会正确地失败,并且构建失败。但是如果我只是抛出一个异常,它就会失败,如上图所示。

我们的插件配置如下所示

代码语言:javascript
复制
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>2.7</version>
    <configuration>
        <redirectTestOutputToFile>true</redirectTestOutputToFile>
        <systemPropertyVariables>
            <oec.env>TEST</oec.env>
            <mule.test.timeoutSecs>2400</mule.test.timeoutSecs>
        </systemPropertyVariables>
        <additionalClasspathElements>
            <additionalClasspathElement>${basedir}/src/main/resources/config</additionalClasspathElement>
            </additionalClasspathElement>
        </additionalClasspathElements>
    </configuration>
    <executions>
        <execution>
            <id>functional-test-1024</id>
            <phase>test</phase>
            <goals>
                <goal>integration-test</goal>
                <goal>verify</goal>
            </goals>
            <configuration>
                <includes>
                    <include>**/IntegrationTierFunctionalTestCase.java</include>
                </includes>
                <forkMode>once</forkMode>
                <argLine>-XX:MaxPermSize=256M -Xmx1024M</argLine>
            </configuration>
        </execution>
    </executions>
</plugin>

我遗漏了什么?不,我不想把它包装在try-catch块中,手动测试失败。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-05-29 01:36:11

您需要有两个执行块,因为maven-failsafe-plugin的验证目标旨在检查集成测试的结果。

代码语言:javascript
复制
  <executions>
    <execution>
        <id>functional-test-1024</id>
        <phase>test</phase>
        <goals>
            <goal>integration-test</goal>
        </goals>
        <configuration>
            <includes>
                <include>**/IntegrationTierFunctionalTestCase.java</include>
            </includes>
            <forkMode>once</forkMode>
            <argLine>-XX:MaxPermSize=256M -Xmx1024M</argLine>
        </configuration>
    </execution>
    <execution>
        <id>verify</id>
        <phase>verify</phase>
        <goals>
            <goal>verify</goal>
        </goals>
    </execution>
  </executions>

此外,您应该将maven-failsafe-plugin的版本更新到2.14.1,而不是2.7。更新:同时更新到2.17

票数 37
EN

Stack Overflow用户

发布于 2015-10-23 03:48:41

如果您像这样运行集成测试:

代码语言:javascript
复制
mvn test-compile failsafe:integration-test

那么你应该知道根据maven documentation on failsafe

在集成测试阶段,Failsafe插件将不会使构建失败,从而使集成后测试阶段得以执行。

我能够让构建失败,如下所示:

代码语言:javascript
复制
mvn test-compile failsafe:integration-test failsafe:verify

下面是我的故障安全配置以供参考:

代码语言:javascript
复制
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>2.19</version>
            <configuration>
                <includes>
                    <include>**/*IT.java</include>
                </includes>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>integration-test</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
票数 17
EN

Stack Overflow用户

发布于 2013-05-29 16:38:12

请验证maven属性"maven.test.failure.ignore“在任何maven pom.xml文件中都没有设置为"true”,因为它可能是测试失败后 not 停止构建的唯一原因。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16797601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档