Groovy 在测试名称中添加方法调用,并使用Spock展开
我有一个代码,我想把方法调用值放在方法的名称中Groovy 在测试名称中添加方法调用,并使用Spock展开,groovy,spock,unroll,Groovy,Spock,Unroll,我有一个代码,我想把方法调用值放在方法的名称中 @Unroll def 'check #file other text'() { setup: def file = allProperties.keySet().getAt(0) ... where: ... 现在,我创建了一个特殊的变量,它只用于命名方法。我可以做一些类似于: static def allProper
@Unroll
def 'check #file other text'() {
setup:
def file = allProperties.keySet().getAt(0)
...
where:
...
现在,我创建了一个特殊的变量,它只用于命名方法。我可以做一些类似于:
static def allProperties
def setupSpec(){
allProperties== [1: 'asd', 2: 'ddd']
}
@Unroll
def 'check #allProperties.keySet().getAt(0) other text'() {
....
where:
...
已编辑:添加setupSpec()
Unroll
支持属性访问或零参数方法。因此,您可以:
@Unroll
def "check #allProperties.keySet().first() other text"() { .. }
提供的
allProperties
是一个类级变量或@共享的变量,或在中提到,其中:
块。用实际测试不影响的东西命名测试有什么好处?如果这个测试后来对我抛出“check lerl other text”(检查lerl other text),我会认为,lerl以某种方式影响了测试,并且它是的一部分,因此展开的原因。如果我将它放在“展开”中,则数据表中所有位置的文件值都必须相同。是的,它是静态的,我尝试了您所说的,但结果是:“…错误:#allProperties.keySet().first…”但我在setupSpec()中初始化了它这就是问题所在吗?你能创建一个简单的规范脚本来复制这个问题吗?我可以研究一下。你必须使用@Shared allProperties
来代替。使用@Shared
可以工作,但是共享和静态有什么区别呢?@共享变量可以在中使用,其中:
类似于静态。但是我现在再次看到了y您正在setupSpec
中使用断言而不是实例化。allProperties==[1:'asd',2:'ddd']
。能否将其更改为allProperties=[1:'asd',2:'ddd']
并使用静态而不是@Shared
。