import spock.lang.IgnoreIf
import spock.lang.Specification
class IgnoreIfSpec extends Specification {
static boolean skip = true
@IgnoreIf({ IgnoreIfSpec.skip })
def "should not execute this test if `IgnoreIfSepc.skip` is set to TRUE"() {
when:
def res = 1 + 1
then:
res == 2
}
def "should execute this test every time"() {
when:
def res = 1 + 1
then:
res == 2
}
}
import spock.lang.IgnoreIf
import spock.lang.Specification
class IgnoreIfSpec extends Specification {
static final boolean skip
static {
//some code for computation
if("some condition")
skip = true
else
skip = false
}
@IgnoreIf({ IgnoreIfSpec.skip })
def "should not execute this test if `IgnoreIfSepc.skip` is set to TRUE"() {
when:
def res = 1 + 1
then:
res == 2
}
def "should execute this test every time"() {
when:
def res = 1 + 1
then:
res == 2
}
}
4条答案
按热度按时间e5nszbig1#
另一种方法是使用spock的配置文件来包含/排除测试或基类。
首先,您创建自己的注解并将其放置在测试中。
然后编写Spock配置文件。
运行测试时,可以将
spock.configuration
属性设置为所选的配置文件。这样,您就可以包含/排除所需的测试和基类。
spock配置文件示例:
您的测试:
然后,您可以执行:
这是一个github example
hgc7kmma2#
您可以通过访问静态上下文中的
skip
字段来完成此操作:否则,传递给
@IgnoreIf()
的闭包会尝试在闭包中查找skip
字段,但会失败。6jjcrrmo3#
如果需要先计算变量,然后根据计算结果决定是否忽略测试,则可以使用静态块和静态变量
9avjhtql4#
另一种说法是:
文件
示例
规范示例,如果需要示例字段、共享字段或示例方法。如果使用此属性,则在不执行fixture、数据提供程序等的情况下,无法预先跳过整个带注解的元素。相反,整个工作流将跟踪到功能方法调用,然后在此检查闭包,并决定是否中止特定迭代。
然后,您可以执行以下操作:
子规格:
第一个
在本例中,
skip
是一个属性,但它也可以是一个方法。