我正在spock中阅读此文档:http://spockframework.org/spock/docs/1.1/data_driven_testing.html并遇到了数据变量分配部分,其中包含以下代码片段:
a = 3
b = Math.random() * 100
c = a > b ? a : b
但是如果我尝试使用可迭代的
怎么办?a << [6, 2, 0]
b << [4, 10, 10]
c = a > b ? a : b
答案 0 :(得分:1)
没有。
Spock重写了你的测试规范(通过使用groovy编译器注册AST转换)。
对于where:
子句,它创建代码以迭代到a
和b
提供的列表(并依次为每个值分配这些局部变量)并运行代码每次迭代都c = a > b ? a : b
。
where:
子句的代码转换位于班级org.spockframework.compiler.WhereBlockRewriter
(https://github.com/spockframework/spock/blob/master/spock-core/src/main/java/org/spockframework/compiler/WhereBlockRewriter.java)