Jenkins groovy.lang.MissingMethodException:方法的无签名:catchError()

时间:2020-03-31 22:05:42

标签: jenkins groovy junit jenkins-pipeline

我在groovy文件中使用了Pipeline:Basic Steps(https://jenkins.io/doc/pipeline/steps/workflow-basic-steps/#catcherror-catch-error-and-set-build-result-to-failure)中的Jenkins catchError。 我使用它而不是try / catch,因为我想设置一个stageResult。但是,我无法通过给出错误的测试:

groovy.lang.MissingMethodException: No signature of method: catchError() is applicable for argument types: (java.util.LinkedHashMap...

我的代码如下:

def npmAudit(Map args) {
    catchError (buildResult: 'SUCCESS', stageResult: 'UNSTABLE', message: 'vulnerabilities from npm'){

        sh "npm audit"
        sh "touch audit.done"
    }
}

我的测试如下。我试图为catchError添加一个assertMethodArgsList,下面将其注释掉,但这没有用。 catchError方法在代码中工作正常,但在测试中失败。

@Test
void should_stage_npm_audit() throws Exception {
    npmAudit

    //assertMethodArgsList('catchError', 3, [
        //buildResult: 'SUCCESS',
        //stageResult: 'UNSTABLE',
        //message: 'message'
    //])

    assertMethodArgsList('sh', 2, [
        "npm audit",
        "touch audit.done"
    ])
}

1 个答案:

答案 0 :(得分:1)

在工作流插件的版本2.16中引入的带有参数的

catcherror。更新应解决错误