如何使Spock重试失败的Geb测试?

时间:2012-07-13 16:33:43

标签: grails groovy spock geb

我对使用Geb和Spock的Grails应用程序进行了功能测试。偶尔,功能测试将因超时或其他偶发行为而失败。在以前使用TestNG的项目中,我有一个retryAnalyzer只是在测试执行期间触发重试,以查看它是否两次都失败(然后真实失败)。

如何让Spock重试失败的测试?

2 个答案:

答案 0 :(得分:8)

我知道这个问题已经有一年了,但我们遇到了同样的问题。按照彼得的建议,我创建了一个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
    }
}

答案 1 :(得分:2)

您必须编写一些JUnit规则(例如https://gist.github.com/897229)或Spock扩展名。你可能不得不忍受一些限制,比如同一个规范实例被重用,而JUnit只报告一个单一的测试,但希望没有什么可以完全排除这种方法。 (我想到的一件事是模拟可能不起作用。)在Spock的未来版本中,重复测试(或其构建块)可能会成为一流的概念,从而消除这些限制。