繁体   English   中英

Spock单元测试,groovy leftshift赋值抛出一个SpockExecutionException:数据提供者没有数据

[英]Spock unit test, groovy leftshift assignment is throwing a SpockExecutionException: Data provider has no data

我正在写一个spock单元测试,当我尝试使用groovy collect动态提供数据提供程序时,我得到以下错误

SpockExecutionException: Data provider has no data

这是我可以提供的最简单的情况,抛出错误:

import spock.lang.Shared
import spock.lang.Specification

class SampleTest extends Specification {

    @Shared
    def someArray

    void setup() {
        someArray = ['a','b','c']
    }

    def "ensure that 'Data provider has no data' is not thrown"() {

        expect:
        columnA == columnB

        where:
        [columnA, columnB] << someArray.collect { value -> [value, value] }
    }
}

groovy代码似乎工作。 这是我在groovy控制台上的测试:

def someArray = ['a','b','c']
def test = someArray.collect { value -> [value, value] }
println test

[[a, a], [b, b], [c, c]]

我有什么误会?

我正在使用:

  • groovy版本2.2.1
  • spock版本0.7-groovy-2.0
  • junit版本4.12

使用setupSpec()而不是setup()以您希望的方式访问@Shared变量,如@Shared文档中所示 或者,您也可以在声明期间初始化共享变量。

import spock.lang.*

class SampleTest extends Specification {

    @Shared someArray

    // This is similar to just using
    // @Shared someArray = ['a','b','c']
    // Use above instead of setupSpec() if required
    // setupSpec() is invoked before any test case is invoked
    void setupSpec() {
        someArray = ['a','b','c']
    }

    def "ensure that 'Data provider has no data' is not thrown"() {
        expect:
        columnA == columnB

        where:
        [columnA, columnB] << someArray.collect { [it, it] }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM