我有一个玩游戏! 2斯卡拉应用程序,我使用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?
如果你想传递多个参数,你可以添加多个字符串一个Test.Argument
testOptions in Test += Tests.Argument("include", "unit")
还有的specs2用户指南中这样的例子在这里播放文档和那里 。
首先,下面的specs2引导必须添加标签的规格,这样
class MySpec extends Specification with Tags {
"My spec" should {
"exclude this test" in {
true
} tag ("foo")
"include this one" in {
true
}
}
}
命令行参数,包括都记录在这里
然后一个可选择性地包括或排除测试用
test-only MySpec -- exclude foo
test-only MySpec -- include foo
您还可以使用没有任何变化到您的构建
test-only * -- exclude integration
经测试,在播放2.1 RC3
我使用Play2.2,并有2种方式来做到这一点取决于你是否是在玩控制台。
- 从控制台类型:
test-only full.namespace.to.TestSpec
- 从终端类型:
test-only "full.namespace.to.TestSpec"
我碰到这个问题就来了,而试图找出如何做到与游戏ScalaTest类似的东西。 SBT有详细的关于如何配置文档的附加测试配置 ,但这些可以使用扭捏作游戏的一点。
除了微妙的不同项目的配置,我发现,我想婴儿床一堆从测试设置PlaySettings 。 以下是运行并产生与在“/它 ”目录集成测试源的项目的IntelliJ。 我可能还是会丢失报告和生命周期挂钩,
object BuildSettings {
def testSettings = {
// required for ScalaTest. See http://stackoverflow.com/questions/10362388/using-scalatest-in-a-playframework-project
testOptions in Test := Nil
}
def itSettings = {
// variously cribbed from https://github.com/playframework/Play20/blob/master/framework/src/sbt-plugin/src/main/scala/PlaySettings.scala
sourceDirectory in IntegrationTest <<= baseDirectory / "it"
scalaSource in Test <<= baseDirectory / "it"
libraryDependencies += "play" %% "play-test" % play.core.PlayVersion.current % "it"
}
}
object ApplicationBuild extends Build {
val main = play.Project(
appName,
appVersion,
Dependencies.dependencies)
.configs( IntegrationTest )
.settings(Dependencies.resolutionRepos)
.settings(BuildSettings.testSettings)
.settings(Defaults.itSettings : _*)
.settings(BuildSettings.itSettings)
}