【问题标题】:Unit testing a non-class Groovy function using Gradle使用 Gradle 对非类 Groovy 函数进行单元测试
【发布时间】:2021-03-05 16:21:43
【问题描述】:

我得到了一个 Jenkins 库项目,我想为它编写一些单元测试。我目前正在使用Jenkins Pipeline Shared Libraries Gradle Plugin 其中sets up source paths for unit and integration tests

我要测试的源文件位于src/org/example/pipeline/Terraform.groovy,看起来像:

package org.example.pipeline

def terraformNewWorkspace(String env, Map config) {
    def tfWSCreate = """
        #!/bin/bash
        set -e

        terraform workspace new ${env} || true
        terraform workspace select ${env}
        terraform workspace list
    """
    if (config.currentWorkingDirectory != null) {
        dir("${config.currentWorkingDirectory}") {
          sh(returnStatus: false, script: tfWSCreate)
        }
    } else {
      sh(returnStatus: false, script: tfWSCreate)
    }
}

我创建了一个test/unit/groovy/example/PipelineTests.groovy,如下所示:

import static org.example.pipeline.Terraform.terraformNewWorkspace as terraformNewWorkspace

class TerraformUnitTests extends GroovyTestCase {

   void testNewWorkspace() {
    terraformNewWorkspace("dev", [currentWorkingDirectory: "/tmp/test"])
   }
}

但是,当我尝试使用 gradle test 执行此操作时,我得到了 groovy.lang.MissingMethodException at PipelineTests.groovy。我还尝试了以下方法,因为一些文档似乎表明不属于类的函数在 Groovy 中添加到具有文件名的类中,但我得到了关于缺少方法的相同异常。

import org.example.pipeline.Terraform
...
t = new Terraform()
t.terraformNewWorkspace("dev", [currentWorkingDirectory: "/tmp/test"])

使用 gradle/groovy 导入和测试这个单独函数的正确方法是什么?

【问题讨论】:

    标签: unit-testing gradle groovy jenkins-pipeline jenkins-plugins


    【解决方案1】:

    这是一个简单的语法错误。我忘了使用def 作为我的变量:

    import org.example.pipeline.Terraform
    
    class TerraformUnitTests extends GroovyTestCase {
       void testNewWorkspace() {
        def t = new Terraform()
        t.terraformNewWorkspace("dev", [currentWorkingDirectory: "/tmp/test"])
       }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-04
      • 2020-12-03
      • 1970-01-01
      • 2019-05-16
      • 2016-08-29
      相关资源
      最近更新 更多