2016-09-05 3 views
1

私は、いくつかのテストフレームワーク(ScalaTestとScalaCheck)を使用してSBTプロジェクトを持っています。ほとんどの場合、これは期待どおりに動作します。例えば。 テストを実行すると、両方のバリエーションのテストが実行されます。SBTでテスト専用を使用する場合、特定のテストフレームワークに引数を渡す

libraryDependencies ++= Seq(
    ... 
    "org.scalatest" %% "scalatest" % "2.2.4" % "test", 
    "org.scalacheck" %% "scalacheck" % "1.12.5" % "test" 
) 

しかし、私はScalaCheckに引数を指定しようとすると、テスト専用を実行中ScalaTestステップと文句を言う:

test-only *SomeProp -- -s 10 

[エラー](テスト:testOnly)は、Java .lang.IllegalArgumentException: を指定するスイート(-s)またはネストされたスイート(-i)は、ScatterTestをsbtから実行するときは がサポートされていません。代わりにsbtのテスト専用 を使用してください。上記の例で

ScalaTest代わりScalaCheckの-s引数で呼び出されました。

superclass is "org.scalatest.Suite" or annotated with: "org.scalatest.WrapWith" 

とScalaCheck:ScalaTestためのテストフィンガープリントを見ることによって

superclass is either "org.scalacheck.Properties" or "org.scalacheck.Prop" 

私は実行するためにどのフレームワークへとSBTの一部には混乱があってはならないと仮定上記の指紋を与えられた所与のタイプの試験。 (* SomePropsのバリアントはorg.scalacheck.P​​ropertiesを継承します)テスト専用で呼び出すテストフレームワークを指定する方法はありますか?そうでない場合は、ScalaTestとScalaCheckを別々の設定で実行するようにSBTを設定する必要がありますか?

答えて

0

私は、プロパティベースのテスト(ScalaCheck)のための別の設定を作成することで、これを実現することができました。私は下の私のbuild.sbtへの変更を説明しました。

私はテスト設定で「デフォルト」のテストフレームワークとしてScalaTestを保持:私はScalaCheckプロパティを実行するために別の小道具設定を作成し

libraryDependencies ++= Seq(
    ... 
    "org.scalatest" %% "scalatest" % "2.2.4" % "test" 
) 

src/test/scalaからsrc/prop/scalaにすべてのプロパティベースのテストを移動しなければなりませんでした。私は小道 configに自分のScalaCheck依存関係をスコープしました。これは、小道の設定で使用された場合のみ利用可能になりました。同様に、ScalaTestはテスト configでのみ利用可能です。

lazy val root = 
    Project("root", file(".")). 
    configs(Prop). 
    settings(inConfig(Prop)(Defaults.testSettings)). 
    settings(libraryDependencies += scalacheck) 

lazy val Prop = config("prop") extend (Runtime) 

lazy val scalacheck = "org.scalacheck" %% "scalacheck" % "1.12.5" % "prop" 

これでScalaTestとScalaCheckの両方を引数なしで実行できます。そこで、基本的テストテスト専用実行ScalaTestしばらく小道具:テスト小道具:テスト専用実行ScalaCheck。どのようにセットアップするテスト構成上の

test-only *Spec -- -z "some content" //runs only ScalaTest 

prop:test-only *SomeProp -- -s 10 //runs only ScalaCheck 

詳しい情報はSBT documentationで見つけることができます。

唯一の欠点は、テストを実行して、すべてのテストをもう実行できないことです。私はに頼らなければならない:

;test;prop:test 

上記のエイリアスを作成すると、作業が楽になります。

関連する問題