我正在使用Spock进行测试,我有多个类要测试。我想告诉Spock按特定顺序测试每个班级。有没有办法做到这一点?我注意到TestNG有@AfterTest
注释,Spock也有类似的东西吗?
答案 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 { }
此套件按照定义的顺序执行两个规范Test2Specification
和Test1Specification
: