我有一个使用Geb和Spock的Grails应用程序的功能测试。有时,功能测试会因超时或其他零星行为而失败。在以前使用TestNG的项目中,我会让retryAnalyzer在测试执行期间触发一次重试,以查看是否两次都失败(然后真正失败)。
如何让Spock重试失败的测试?
发布于 2013-10-13 01:54:41
我知道这个问题已经有一年之久了,但我们一直都有同样的问题。按照Peter的建议,我创建了一个Spock扩展(https://github.com/anotherchrisberry/spock-retry)。
如果你有一个基本规范(就是我们的例子),你只需要给它添加一个@RetryOnFailure注解:
@RetryOnFailure
class BaseFunctionalSpec extends Specification {
// all tests will execute up to two times before failing
}或者,您可以将其添加到特定功能:
class SomeSpec extends Specification {
@RetryOnFailure(times=3)
void 'test something that fails sporadically'() {
// will execute test up to three times before failing
}
}发布于 2012-07-14 02:37:18
您必须编写一个小的JUnit规则(例如,类似于https://gist.github.com/897229)或Spock扩展。您可能不得不接受一些限制,比如相同的规范实例被重用,JUnit只报告一个测试,但希望不会完全排除这种方法。(我想到的一件事是,模仿可能不起作用。)在Spock的未来版本中,重复测试(或其构建块)可能会成为一流的概念,取消这些限制。
https://stackoverflow.com/questions/11474609
复制相似问题