我绝对可以在这里使用一些帮助。我有一个excel表,我从中获取值并对它们进行一些验证,我正在检查两个值是否匹配。我的代码如下:
@Unroll ("For #calcToCheck.tr_date_class")
def "I check flag value #calcToCheck.tr_date "(CalculationClass calcToCheck) {
expect:
flag==calcToCheck.result
where:
calcToCheck << calInputParameters()
}
def calInputParameters() {
//some logic to get values from SQL and getting flag
return calcsToCheck
}
这对于一行运行良好但是当我在excel表中插入多行时,我只得到输出作为一个结果。我想看看每一行的结果。我想添加@Unroll
会照顾它,显示它显示结果的行但不是。
答案 0 :(得分:0)
以下是您可以运行然后修改的示例代码。因为你没有解释flag
来自哪里,所以我只是编造了一些东西,假设它也是一个展开的参数,而不是你帮助方法提供的任何参数。
package de.scrum_master.stackoverflow
import spock.lang.Specification
import spock.lang.Unroll
/**
* See https://stackoverflow.com/q/48410722/1082681
*/
class PseudoExcelTableTest extends Specification {
@Unroll//("For #calcToCheck.tr_date_class")
def "I check flag value #calcToCheck.tr_date"(CalculationClass calcToCheck, int flag) {
expect:
flag == calcToCheck.result
where:
calcToCheck << calInputParameters()
flag << [11, 22, 33]
}
def calInputParameters() {
def calcsToCheck = new ArrayList<CalculationClass>()
calcsToCheck.addAll(
new CalculationClass(result: 11, tr_date: "eleven", tr_date_class: "short"),
new CalculationClass(result: 22, tr_date: "twenty-two", tr_date_class: "long"),
new CalculationClass(result: 33, tr_date: "thirty-three", tr_date_class: "normal")
)
return calcsToCheck
}
static class CalculationClass {
int result
String tr_date
String tr_date_class
}
}
对于展开的方法名称,你混淆了两件事:
@Unroll
参数命名方法,在我的示例中,这将导致方法名称For short
,For long
,For normal
。这优先于第二种选择:I check flag value eleven
,I check flag value twenty-two
,I check flag value thirty-three
。我通过注释掉unroll参数来选择选项2.