あなたはスポックの設定ファイルを使用することができます。
テストの2種類の注釈を作成 - @Local
と@PreProd
を、Groovyで例えば:
import java.lang.annotation
@Retention(RetentionPolicy.RUNTIME)
@Target([ElementType.TYPE, ElementType.METHOD])
@Inherited
public @interface Local {}
次のステップは、例えば、それに応じてスペックに注釈を付けることである。
@Local
class SpecificationThatRunsLocally extends GebSpec { ... }
次に作成次のコンテンツを含むGebConfig.groovy
ファイルの隣にSpockConfig.groovy
ファイルがあります。
def gebEnv = System.getProperty("geb.env")
if (gebEnv) {
switch(gebEnv) {
case 'local':
runner { include Local }
break
case 'pre-prod':
runner { include PreProd }
break
}
}
編集:Grailsが独自のテストランナーを使用しているようです。つまり、Grailsから仕様を実行するときにSpockConfig.groovyが考慮されていないことを意味します。 Grailsの下で動作する必要がある場合は、@ IgnoreIf/@ Requireが組み込みSpock拡張アノテーションを使用する必要があります。
まず、特定の仕様を有効にする必要がある場合のロジックを使用してClosureクラスを作成します。論理を拡張注釈のクロージャ引数として直接入れることもできますが、たくさんの仕様に注釈を付ける場合は、その場所のコードをコピーするのは面倒です。その後、
class Local extends Closure<Boolean> {
public Local() { super(null) }
Boolean doCall() {
System.properties['geb.env'] == 'local'
}
}
class PreProd extends Closure<Boolean> {
public PreProd() { super(null) }
Boolean doCall() {
System.properties['geb.env'] == 'pre-prod'
}
}
そして、あなたのスペックに注釈を付ける:
@Requires(Local)
class SpecificationThatRunsLocally extends GebSpec { ... }
@Requires(PreProd)
class SpecificationThatRunsInPreProd extends GebSpec { ... }
おかげERDIあなたが応答が、どのように私は注釈を作成するのですか、あなたは例を持ってくださいか? Tx – ErEcTuS
私の更新されたレスポンスを参照してください – erdi
erdi、私のSockConfigは私のgrailsアプリケーションでは見られません。そしてgebConfigと同じパッケージに入れました。デバッグ中に、spockconfig内のコードは決して到達しません – ErEcTuS