Grails 4使用org.spockframework:spock-core:1.2-groovy-2.5
,在此版本中,它按预期工作(与其他Spock版本一样)。我正在将大型应用程序从Grails 3.3迁移到Grails 4。
我们遇到的与Spock有关的问题,我们在Grails 3.39中使用的功能似乎丢失了:当使用数据表来表示规格时,输入的列似乎正在接受jus整数值] >
在下面的代码中,仅斑点的第一行正在传递文本。没有接下来的两个,因为spock正在转换为整数,因为将其传递给Math.round(value)
import spock.lang.* @Unroll void 'test to demostrate Spock is just accepting integer in datatable column value'() { expect: Math.round(value) == result where: value | result 1234 | 1234 4321.56d | 4322d 1111.56f | 1112d }
我不是在Grails的3.3版中遇到此问题。
提前感谢您参加此问题
Juan
更新:
更新:
描述的行为变化,实际上是在基于数据表的测试之前进行的包括抛出异常的测试的情况下发生>
周围工作:
将包含异常抛出的测试移动到最后一个测试。
我正在将一个大型应用程序从Grails 3.3迁移到Grails4。在我们遇到的与Spock有关的问题上,似乎缺少了在Grails 3.39中使用的功能:使用... ...]] >
Grails 4使用org.spockframework:spock-core:1.2-groovy-2.5
,在此版本中,它按预期工作(与其他Spock版本一样)。以这种方式更新您的规范:
import spock.lang.Specification
import spock.lang.Unroll
class RoundSpec extends Specification {
@Unroll
void 'Math.round(#value) == #result'() {
setup:
println "$value as ${value.class}"
expect:
Math.round(value) == result
where:
value || result
1234 || 1234
4321.56d || 4322
1111.56f || 1112
}
}
然后您会看到所有测试用例都通过了测试,并且您还可以在输出中看到将哪个类的数据传递到测试中:
因此,Integer
,Double
和Float
是通过的,而不是在编写时在所有情况下都是Integer
。
我在测试中看到的是,您两次将result
值作为Double
,但是Math.round()
每次都返回很长。
Grails 4使用org.spockframework:spock-core:1.2-groovy-2.5
,在此版本中,它按预期工作(与其他Spock版本一样)。