如何告诉Spock哪个类按特定顺序运行

时间:2018-02-26 10:17:22

标签: groovy spock

我正在使用Spock进行测试,我有多个类要测试。我想告诉Spock按特定顺序测试每个班级。有没有办法做到这一点?我注意到TestNG有@AfterTest注释,Spock也有类似的东西吗?

1 个答案:

答案 0 :(得分:3)

您无法指定Spock测试类的执行顺序。但是,Spock允许您在向测试类添加@Stepwise注释时指定方法执行顺序 - 在这种情况下,Spock将按从上到下的顺序执行所有方法,如果一个方法失败,它将忽略此测试中的其余方法类。

  

表示规范的特征方法应按其声明的顺序依次运行(即使存在并行规范运行器),始终从第一个方法开始。如果方法失败,将跳过其余方法。在superpec和subspecs中声明的特征方法不受影响。

     

@Stepwise对于方法之间具有(逻辑)依赖关系的规范很有用。特别是,它有助于在方法失败后避免连续错误,这使得更容易理解真正出错的地方。

参考:http://spockframework.org/spock/javadoc/1.1/spock/lang/Stepwise.html

@Stepwise
class StepwiseExample extends Specification {

    def "first test method to run"() {
        // ....
    }

    def "second test method to run"() {
        // ....
    }

    def "if previous method failed this one will be ignored"() {
        // ....
    }
}

使用org.junit.runners.Suite

Jeff Scott Brown对JUnit的@Suite.SuiteClasses做了很好的评论。在这种情况下,您将创建一个类,您可以将测试类(规范)聚合到一个测试套件中,这些类将按照它们在套件中定义的顺序执行。请考虑以下示例:

import org.junit.runner.RunWith
import org.junit.runners.Suite

@RunWith(Suite)
@Suite.SuiteClasses([
        Test2Specification,
        Test1Specification
])
class TestSuiteSpecification { }

此套件按照定义的顺序执行两个规范Test2SpecificationTest1Specification

enter image description here