我有戏!2 用于 Scala 应用程序,我正在使用 Specs2 进行测试。我可以使用test
命令运行所有测试,或者使用test-only MyParticularSpec
.
我想做的是标记一些特定的规范,甚至是规范中的单个方法,以便执行以下操作:
- 运行所有非集成的测试(即不访问外部资源)
- 在写入模式下运行所有不访问外部资源的测试(但仍在运行读取测试)
- 运行所有测试,但给定一个
等等。
我想这样的事情应该是可行的,也许通过添加一些注释,但我不知道如何去做。
是否存在一种机制来选择性地运行某些测试而不是其他测试?
编辑我在使用时已经回答了自己test-only
。命令行选项仍然不适用于该test
任务。按照sbt 指南,我尝试创建一个额外的 sbt 配置,比如
object ApplicationBuild extends Build {
// more settings
lazy val UnitTest = config("unit") extend(Test)
lazy val specs = "org.scala-tools.testing" %% "specs" % "1.6.9" % "unit"
val main = PlayProject(appName, appVersion, appDependencies, mainLang = SCALA)
.configs(UnitTest)
.settings(inConfig(UnitTest)(Defaults.testTasks) : _*)
.settings(
testOptions in UnitTest += Tests.Argument("exclude integration"),
libraryDependencies += specs
)
}
这在我传递不带选项的参数时有效,例如当我输入Test.Argument("plan")
. 但我无法找到如何传递更复杂的论点。我试过了
Tests.Argument("exclude integration")
Tests.Argument("exclude=integration")
Tests.Argument("-exclude integration")
Tests.Argument("-exclude=integration")
Tests.Argument("exclude", "integration")
Tests.Argument("exclude \"integration\"")
可能还有更多。仍然不知道什么是正确的语法。
有谁知道如何将带有选项的参数从 sbt 传递给 specs2?