サブプロジェクトと親プロジェクトにテストを含むマルチプロジェクトビルドがあります。ビルドが集約されるので、親プロジェクトは子プロジェクトのすべてのテストを実行します。
サブプロジェクトと親プロジェクトの両方でテストが並行して実行されないように構成しました。
parallelExecution in Test := false
ただし、複数のプロジェクトにまたがるテストが並行して実行されるというしつこい感じがあります。サブプロジェクトの1つの場合、テストデータベースの状態が同時に変化し、テストが失敗するため、これは問題です。
プロジェクト間でテストの並列実行をグローバルに切り替える方法に関するアイデアはありますか?
スコープThisBuild
を使用して、プロジェクト全体に設定を適用できると思います。
parallelExecution in ThisBuild := false
スコープTest
と組み合わせることができるかどうかはわかりませんが、必要ないかもしれません。
すべてのプロジェクトで同時に実行するテストの数を制限するには、以下を使用します。
concurrentRestrictions in Global += Tags.limit(Tags.Test, 1)
ディスカッション を参照してください
これは1.1.0で私のために働きました:
Test / parallelExecution := false
ここで私の答えを参照してください テスト時にサブプロジェクトテスト(セットアップメソッドを含む)を順次実行する方法
並列実行を防ぐ別の方法があります。異なるプロジェクトのテストタスクを相互に依存させることができます。
test in Project2 := (test in Project2).dependsOn(test in Project1).value
parallelExecution in Test in Project2 := false
https://stackoverflow.com/a/27068019/1922026 に基づく別の可能性は、ルートプロジェクトでコマンドエイリアスを定義することです。
.settings(addCommandAlias("test", ";s1/test;s2/test;s3/test"): _*)
ここで、s1、s2、およびs3はサブプロジェクトです。ルートプロジェクトで「テスト」を実行すると、テストは定義された順序で順番に実行されます。