如何排除 Geb 中的测试?

How to exclude tests in Geb?

我正在将 Geb 与 Spock 一起使用,我想介绍测试标记。使用语法在 Spock 中很容易实现:

runner {
  if (!System.properties.containsKey('test.include.slow')) {
    exclude Slow
  }
}

如果未找到 test.include.slow 属性,这将排除所有用 @Slow 注释的测试。不幸的是,将 exclude 放入 GebConfig.groovy 并没有真正做到,因为那里没有这样的方法。

有没有办法在 Geb 中使用这种 exclude 方法?

由于您使用的是 spock,因此可以在 class 或方法级别使用 @IgnoreIf。

这是一篇关于它的好文章: http://mrhaki.blogspot.com/2014/06/spocklight-ignore-specifications-based.html

既然你有一个系统 属性,你应该能够直接插入它:

@IgnoreIf({ !System.properties.containsKey("test.include.slow") })

你走在正确的轨道上,但你应该将运行器配置代码放在 SpockConfig.groovy 而不是 GebConfig.groovy 中,因为它是 Spock 特定配置。