有没有办法从 Specs 2 运行特定测试Specification
?例如,如果我有以下情况:
class FooSpec extends Specification {
"foo" should {
"bar" in {
// ...
}
"baz" in {
// ...
}
}
}
我想有一种只运行的方法FooSpec > "foo" > "bar"
(在这里使用一些任意符号)。
有没有办法从 Specs 2 运行特定测试Specification
?例如,如果我有以下情况:
class FooSpec extends Specification {
"foo" should {
"bar" in {
// ...
}
"baz" in {
// ...
}
}
}
我想有一种只运行的方法FooSpec > "foo" > "bar"
(在这里使用一些任意符号)。
你可以使用ex
sbt 的参数来运行一个特定的例子:
sbt> test-only *FooSpec* -- ex bar
您还可以混合org.specs2.mutable.Tags
特征并包含特定标签:
sbt> test-only *FooSpec* -- include investigate
class FooSpec extends Specification with Tags {
"foo" should {
tag("investigate")
"bar" in {
// ...
}
"baz" in {
// ...
}
}
}
您也可以重新运行以前失败的示例,无论它们是什么
sbt> test-only *FooSpec* -- was x
最后,在下一个 2.0 版本(或使用最新的 1.15-SNAPSHOT)中,您将能够创建script.Specification
并使用“自动编号的示例组”:
import specification._
/**
* This kind of specification has a strict separation between the text
* and the example code
*/
class FooSpec extends script.Specification with Groups { def is = s2"""
This is a specification for FOO
First of all, it must do foo
+ with bar
+ with baz
"""
"foo" - new group {
eg := "bar" must beOk
eg := "baz" must beOk
}
}
// execute all the examples in the first group
sbt> test-only *FooSpec* -- include g1
// execute the first example in the first group
sbt> test-only *FooSpec* -- include g1.e1
但是,无法使用可变规范指定您要运行示例"foo" / "bar"
。这可能是将来要添加的功能。
您可以选择要执行的测试的命名空间,但 AFAIK 无法从sbt console
. 您可以执行以下操作:
sbt test:compile "test-only FooSpec.*"
,它只从FooSpec
命名空间运行测试,但是这个选择是基于命名空间的,甚至不能正常工作。这是选择机制,但它以某种方式失败并且总是运行在您的项目中找到的整个测试集。
更新
从官方文档:
test-only
仅测试任务接受以空格分隔的测试名称列表以运行。例如:
test-only org.example.MyTest1 org.example.MyTest2
它也支持通配符:
test-only org.example.*Slow org.example.MyTest1