Bir Spock yapılandırma dosyasını kullanabilirsiniz:
benim GebConfig yapılandırılmış olması, birden ortamlar var.
@Local
class SpecificationThatRunsLocally extends GebSpec { ... }
Sonra oluşturmak:
import java.lang.annotation
@Retention(RetentionPolicy.RUNTIME)
@Target([ElementType.TYPE, ElementType.METHOD])
@Inherited
public @interface Local {}
Sonraki adım, örneğin buna göre gözlük açıklama şudur: Groovy örneğin @Local
ve @PreProd
, -
testlerin iki tip açıklamalar oluşturun aşağıdaki içerikleri ile GebConfig.groovy
dosyanın yanındaki bir SpockConfig.groovy
dosyası:
def gebEnv = System.getProperty("geb.env")
if (gebEnv) {
switch(gebEnv) {
case 'local':
runner { include Local }
break
case 'pre-prod':
runner { include PreProd }
break
}
}
DÜZENLEME: O Grails gelen özelliklere çalıştırırken SpockConfig.groovy dikkate alınmaz demektir kendi test atlet kullanıyor Grails benziyor. Eğer Grails altında çalışmak için ihtiyacınız varsa o zaman @ IgnoreIf/@ Dahili Spock uzantılı ek açıklamaları kullanmalısınız.
İlk verilen bir Spec etkin olması gerektiğine ilişkin mantığı ile bir Kapanış sınıf oluşturmak. Mantığı, uzantı ek açıklamalarına doğrudan bir kapatma argümanı olarak koyabilirsiniz, ancak çok fazla ayrıntıya ek açıklama eklemek istiyorsanız, bu kod bitini kopyalamak için can sıkıcı olabilir.
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'
}
}
Ve sonra sizin gözlük açıklama: Eğer yanıtını için
@Requires(Local)
class SpecificationThatRunsLocally extends GebSpec { ... }
@Requires(PreProd)
class SpecificationThatRunsInPreProd extends GebSpec { ... }
Teşekkür erdi, ama nasıl sana örnekler var, ek açıklamalar lütfen oluşturabilirim? Tx – ErEcTuS
Güncellenmiş yanıtıma bakın – erdi
erdi, benim SockConfig benim grails uygulamanız tarafından 'görülmedi' .. ve bunu gebConfig ile aynı pakete koydum. Hata ayıklama yaparken, spockconfig içindeki kod hiçbir zaman ulaşılamaz. – ErEcTuS