Jas*_*nan 3 java groovy junit unit-testing spock
我正在写一个spock单元测试,当我尝试使用groovy collect动态提供数据提供程序时,我得到以下错误
SpockExecutionException: Data provider has no data
Run Code Online (Sandbox Code Playgroud)
这是我可以提供的最简单的情况,抛出错误:
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] }
}
}
Run Code Online (Sandbox Code Playgroud)
groovy代码似乎工作.这是我在groovy控制台上的测试:
def someArray = ['a','b','c']
def test = someArray.collect { value -> [value, value] }
println test
[[a, a], [b, b], [c, c]]
Run Code Online (Sandbox Code Playgroud)
我有什么误会?
我正在使用:
如文档中所示,使用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] }
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1692 次 |
| 最近记录: |