Grails3-有条件忽略Spock测试

Grails3-有条件忽略Spock测试,grails,intellij-idea,gradle,spock,Grails,Intellij Idea,Gradle,Spock,我想使用Spock annotation@IgnoreIf({condition})在从Intellij IDEA运行时忽略基于给定环境变量的测试 我在测试中使用它:@IgnoreIf({env.IGNORE\u REDIS=='true'})。并在Gradle运行配置中进行如下设置: 但是,从未设置环境属性。这是一个IDEA错误还是我的配置中缺少了一些东西?这个怎么样 @IgnoreIf({ properties.IGNORE_REDIS == 'true' }) 对我来说,这在Spock

我想使用Spock annotation
@IgnoreIf({condition})
在从Intellij IDEA运行时忽略基于给定环境变量的测试

我在测试中使用它:
@IgnoreIf({env.IGNORE\u REDIS=='true'})
。并在Gradle运行配置中进行如下设置:

但是,从未设置环境属性。这是一个IDEA错误还是我的配置中缺少了一些东西?

这个怎么样

@IgnoreIf({ properties.IGNORE_REDIS == 'true' })
对我来说,这在Spock中有效(但不使用Grails)。

这个怎么样

@IgnoreIf({ properties.IGNORE_REDIS == 'true' })

对我来说,这在Spock中有效(但不使用Grails)。

您需要修改gradle测试任务以复制系统属性

task integrationTest(...) {
        systemProperties System.properties // this line passes the systemproperties from gradle to your tests
}
对于您在斯波克的测试:

@IgnoreIf({sys['IGNORE_REDIS']})
//or
@IgnoreIf({sys.IGNORE_REDIS})
//or
@IgnoreIf({sys.IGNORE_REDIS == 'true'})

您需要修改gradle测试任务以复制系统属性

task integrationTest(...) {
        systemProperties System.properties // this line passes the systemproperties from gradle to your tests
}
对于您在斯波克的测试:

@IgnoreIf({sys['IGNORE_REDIS']})
//or
@IgnoreIf({sys.IGNORE_REDIS})
//or
@IgnoreIf({sys.IGNORE_REDIS == 'true'})

您需要确保属性通过gradle任务。默认情况下,它们不会像这样传递这些参数
bootRun{systemProperties=System.properties}
。这就是你的意思吗?如果我记录System.properties,我会在那里看到我的值。问题是如何在
@IgnoreIf
闭包中访问它。
System.getProperty('IGNORE\u REDIS')=='true'
这也不起作用。似乎IDEA用它自己的系统属性封装了运行……我认为您不需要确保属性通过gradle任务。默认情况下,它们不会像这样传递这些参数
bootRun{systemProperties=System.properties}
。这就是你的意思吗?如果我记录System.properties,我会在那里看到我的值。问题是如何在
@IgnoreIf
闭包中访问它。
System.getProperty('IGNORE\u REDIS')=='true'
这也不起作用。似乎IDEA用它自己的系统属性封装了运行……我不认为Gradle会不知何故不将属性转发给Grails。我是一个Maven用户,所以我无法在这里进一步帮助您。那么,也许Gradle不知何故没有将属性转发给Grails。我是一个Maven用户,所以我无法在这里进一步帮助您。