2017-04-18 5 views
1

Spockアノテーション@IgnoreIf({condition})を使用して、Intellij IDEAから実行するときに特定の環境変数に基づいてテストを無視したいとします。Grails 3 - 条件付きでSpockテストを無視する

私はこれを私のテストで使用します:@IgnoreIf({ env.IGNORE_REDIS == 'true' })。そして、次のようGradleの実行構成でそれを設定します。

enter image description here

しかし、環境プロパティが設定されることはありません。 IDEAのバグですか、私の設定に何か不足していますか?

+0

あなたは、プロパティはGradleのタスクを通過することを確認する必要があります。デフォルトでは、私はこれらの引数を 'bootRun {systemProperties = System.properties}'のように渡しません。 –

+0

これはあなたが意味することですか? 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

システムプロパティをコピーするには、グラデーションテストタスクを変更する必要があります。

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'}) 
関連する問題