9

統合サーバーおよび開発環境でテストを実行するための別のオプション セットを設定したいと考えています。

このオプションを用意しましょう:

testOptions := Seq(Tests.Filter(s => Seq("Spec", "Unit").exists(s.endsWith(_))))

コマンドに のようなスコープがプレフィックスとして付けられているtestOptions場合にのみ適用されるように、を変更するにはどうすればよいですか?testteamcity:test

私は、 testOptions が同様の構文で変更されることを期待しています:

testOptions in Teamcity := ...

*.sbtまた、ビルドではなく単純なビルドで望ましいカスタムスコープを定義する方法も知りたいproject/*.scalaです。

4

1 に答える 1

15

スコープは、プロジェクト、構成、またはタスクのいずれかです。この場合、カスタム構成を定義しようとしていると思います。

それを使用する設定

IntegrationTest既に呼び出されている組み込みの構成があります。次のように記述して、ビルド定義で定義できます。

Defaults.itSettings

src/it/scala/これは、テストコード ( に入る) とライブラリを含む通常のテストとはまったく異なるセットアップを使用するため、これはあなたが望むものではないかもしれません.

独自の構成を定義する

sbt 0.13 を使用すると、build.sbt で次のようにカスタム構成を定義できます。

val TeamCity = config("teamcity") extend(Test)

val root = project.in(file(".")).
  configs(TeamCity).
  settings(/* your stuff here */, ...) 

チームシティの定義:テスト

次に、 を定義する方法を理解する必要がありますteamcity:test

編集: Mark Harrah は、こ​​れに関するドキュメントがあることを指摘してくれました。共有ソースを使用した追加のテスト構成を参照してください。

別のテスト ソース セット (およびコンパイル) を追加する代わりに、ソースを共有することができます。このアプローチでは、ソースは同じクラスパスを使用して一緒にコンパイルされ、一緒にパッケージ化されます。

すべてを一緒に入れて

val TeamCity = config("teamcity") extend(Test)

val root = project.in(file(".")).
  configs(TeamCity).
  settings( 
    name := "helloworld",
    libraryDependencies ++= Seq(
      "org.specs2" %% "specs2" % "2.2" % "test"
    )
  ).
  settings(inConfig(TeamCity)(Defaults.testTasks ++ Seq(
    testOptions := Seq(Tests.Argument("nocolor"))
  )): _*)

teamcity:testSpecs2 出力を実行すると、色が表示されません。

于 2013-09-13T23:32:27.710 に答える