2017-04-18 39 views
1

我想使用Spock注释@IgnoreIf({condition})忽略从Intellij IDEA运行时基于给定环境变量的测试。Grails 3 - 有条件地忽略Spock测试

我在测试中使用这个:@IgnoreIf({ env.IGNORE_REDIS == 'true' })。而在摇篮运行配置设置如下:

enter image description here

然而,环境属性永远不会设置。它是一个IDEA错误还是我在配置中丢失了某些东西?

+0

你需要确保财产通过gradle这个任务。默认情况下,它们不会 –

+0

我传递这些参数,如'bootRun {systemProperties = System.properties}'。这是你的意思吗?如果我记录System.properties,我会在那里看到我的价值。问题是我如何在'@ IgnoreIf''中访问它。 – kuceram

+0

'System.getProperty('IGNORE_REDIS')=='true'' –

回答

0

这个怎么样?

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

对我来说,这个工作在Spock(尽管不使用Grails)。

+0

不适合我... – kuceram

+0

然后也许Gradle以某种方式不转发属性到Grails。我是Maven用户,因此我无法在此帮助您。 – kriegaex

0

您需要修改您的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'})