我正在尝试指定运行Spec2规范的顺序,我知道sequential
关键字确保它们一个接一个地运行,但这对应于规范中的测试(并且没有'实际上保证任何订单)
我发现了这个问题:https://stackoverflow.com/a/15832297/1757402看起来很有希望但又一次,似乎只是在规范中对测试进行排序
我假设SBT / Specs按照JVM返回类的顺序运行规范,有什么方法可以改变它吗?或者以任何方式保证订单?
所以说我有以下规格:
CApplicationSpec.scala
@RunWith(classOf[JUnitRunner])
class CApplicationSpec extends Specification {
"CApplicationSpec" should {
"be OK" in new WithApplication{
OK must equalTo(OK)
}
}
}
BApplicationSpec
@RunWith(classOf[JUnitRunner])
class BApplicationSpec extends Specification {
"BApplicationSpec" should {
"be OK" in new WithApplication{
OK must equalTo(OK)
}
}
}
目前如果我测试这些,执行的顺序每次都会改变,我想要一种方法能够保证BApplication(或任何其他规范)总是先运行,也许按字母顺序排序?
答案 0 :(得分:0)
您可以创建一个规范"link"其他规范并按指定顺序运行:
object AllSpecifications extends Specification { def is = s2"""
${"run BSpecification" ~ BSpecification}
${"run CSpecification" ~ CSpecification}
"""
}
答案 1 :(得分:0)
我最终通过SBT使用testGrouping
来完成//Put all tests into a single Group so that SBT reports correct number of tests, but order them by test name
testGrouping in Test <<= definedTests in Test map { tests => {
val sortedTests = tests map {
test => new Tests.Group(test.name, Seq(test), Tests.InProcess)
} sortBy (_.name.toLowerCase) flatMap {
_.tests
}
Seq(new Tests.Group("Tests", sortedTests, Tests.InProcess))
}
}
按字母顺序排序所有测试(包括包名称)然后我想要在特定包装中首先运行所有规格