确定 Spock 测试的执行顺序

Posted

技术标签:

【中文标题】确定 Spock 测试的执行顺序【英文标题】:Determine order of execution of Spock tests 【发布时间】:2012-11-14 14:04:25 【问题描述】:

有没有办法设置在 Spock 规范中执行测试的顺序?

例如:

class MySpec extends IntegrationSpec 
    def 'test A'...

    def 'test B'...

我希望始终在“测试 B”之前执行“测试 A”

这是因为我正在使用 Geb 和 Spock 进行一些功能测试,并且数据不会在测试之间回滚。

【问题讨论】:

糟糕,看来这不是星际迷航中的小林丸测试。 【参考方案1】:

您可以在规范上使用@Stepwise 注释,spock 将按照指定的顺序运行规范的每个测试定义。看this example。

【讨论】:

对于 Geb,使用 Geb(Reporting)Spec@Stepwise 从 IntegrationSpec 扩展时,@Stepwise 有效,但在扩展 GebReportingSpec 时则无效。知道为什么吗? 事实上,它确实适用于 GebReportingSpec。我遇到的问题与我扩展基本规范的规范有关。我的 subSpec 有一个设置方法,我认为(添加到继承中)可能会导致我的问题。 这是@Stepwise 和继承之间的已知问题:groups.google.com/forum/?fromgroups=#!topic/spockframework/…。还有code.google.com/p/spock/issues/detail?id=183。事实上,由 Pangea 发布。

以上是关于确定 Spock 测试的执行顺序的主要内容,如果未能解决你的问题,请参考以下文章

关于构造函数及参数执行顺序说明(c#)

可以确定 fork() 的执行顺序吗?

测试套件TestSuite

确定 Android 应用程序中语句的执行顺序?

python之uinttest,用例执行顺序

XCTest 从以随机顺序运行的测试中获取执行顺序