我使用 Geb + Spock + jUnit runner + Maven 我的规格如下:
@Stepwise
class My_Spec extends GebReportingSpec {
@IgnoreIf({properties['sss'].contains('true')})
def "testFeature 1" (){
println ("--> Feature 1 runs")
given:
println ("--> mySystemProp is: ${properties['sss']}")
...
when:
...
then:
...
}
def "testFeature 2" (){
println ("--> Feature 2 runs")
when:
...
then:
...
}
}
我需要使用 jUnit runner 运行我的 Specs,因为我需要在 TestSuites 中对其进行分组。我找到了一种在 testSuite 运行之前设置系统属性的方法。它在 jUnit 4.9 - @ClassRule 中可用。所以,我在这里使用它。通过这种方式,我的 TestSuites 就像:
@RunWith(Suite.class)
@Suite.SuiteClasses([
My_Spec.class,
My_Spec1.class,
My_Spec2.class
])
class TestSuite extends Specification {
@ClassRule
public static ExternalResource testRule = new ExternalResource(){
@Override
public void before() throws Throwable{
System.setProperty('sss', 'true')
}
}
}
但是@IgnoreIf 行为不起作用:它没有看到添加的系统属性 'sss' 但是,在功能方法中,此属性可用:当功能运行时,它会给出下一个输出:
Running TestSuite
--> Feature 1 runs
--> mySystemProp is: true
--> Feature 2 runs
所有这些我都使用 maven install 运行。我的 pom.xml 片段:
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<includes>
<include>TestSuite.*</include>
</includes>
<systemPropertyVariables>
我究竟做错了什么?如果一切都正确 - 我怎样才能使它与 spock 的 @IgnoreIf 和道具一起工作,我需要在 jUnit TestSuite 中定义?(请不要提供使用 jUnit 的 @Categories。)
谢谢。