私は遊びを持っています!Scala アプリケーションには 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
)
}
これは、オプションなしで引数を渡す場合、たとえば put の場合に機能します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 にオプション付きの引数を渡す方法を知っている人はいますか?