【问题标题】:How to zip test report even if test fails (Maven, Jenkins)即使测试失败,如何压缩测试报告(Maven,Jenkins)
【发布时间】:2018-03-04 00:12:54
【问题描述】:

我有一个 Maven 项目,其中包含(Selenium / Cucumber)测试代码,通过 Maven 运行。这些测试创建自定义的 ExtentReports HTML 报告,这些报告存储在 target/extentreports 中。始终会创建此 HTML 报告(当然,除非项目未编译)。

我想要完成的是,在测试执行之后,这个文件夹的内容被归档到一个 zip 文件中(最好移动到另一个文件夹)。即使测试失败,这也应该发生。因此,从本质上讲,我希望添加一些无论通过“测试”目标运行的测试是否失败都会运行的东西。

目前,我正在运行我的测试

mvn clean test

使用 JUnit 运行 Cucumber / Selenium 测试。

我尝试了多种 Maven 插件的方法和组合(surefire、failsafe),但我还没有找到合适的解决方案。

我正在通过 Jenkins 运行这些测试,因此任何构建后的 Jenkins 解决方案也都可以。我不确定是否需要安装 Jenkins 插件(我们自己不管理 Jenkins),因此首选不需要这样做的解决方案。

【问题讨论】:

    标签: maven jenkins junit


    【解决方案1】:

    标准方法是:

    • 确保构建不会因为测试而失败:

      mvn 测试 -Dmaven.test.failure.ignore=true

    • 添加一个构建后步骤发布 JUnit 测试结果报告,这会将构建着色为黄色。

    【讨论】:

    • 谢谢,但我说的是需要邮寄的自定义报告,而不是需要由 Jenkins 解释的标准 JUnit 报告。
    【解决方案2】:

    Jenkins 确实允许后期操作

    pipeline {
        agent any
        stages {
            stage('Example') {
                steps {
                    echo 'Hello World'
                }
            }
        }
        post { 
            always { 
                echo 'I will always say Hello again!'
                //do your zip step here
            }
        }
    }
    

    如果您不使用声明式,那么您可以将您的黄瓜测试包装在 try catch 中

    https://jenkins.io/doc/pipeline/steps/workflow-basic-steps/#code-catcherror-code-catch-error-and-set-build-result

    node {
        sh './set-up.sh'
        try {
            sh 'might fail'
            echo 'Succeeded!'
        } catch (err) {
            echo "Failed: ${err}"
        } finally {
            sh './tear-down.sh'
        }
        echo 'Printed whether above succeeded or failed.'
    }
    

    【讨论】:

    • 谢谢,我会与我们的 Jenkins 管理员联系,看看这是否可行。
    猜你喜欢
    • 2017-05-21
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    • 2018-04-05
    • 1970-01-01
    • 2011-09-16
    • 2018-07-04
    相关资源
    最近更新 更多