web-dev-qa-db-ja.com

マルチプロジェクトでのSBTテスト依存関係:依存プロジェクトでテストコードを利用できるようにする

私はいくつかのプロジェクトが相互に依存関係にあるSBTマルチプロジェクトを持っています。このような:

 lazy val coreProject: Project = Project(
    id = "core-project",
    base = file("./core-project"),
    // other stuff
    ))

  lazy val extensions: Project = Project(
    id = "extensions",
    base = file("./extensions"),
    dependencies = Seq(coreProject)
  )

これで、test-folderの 'core'プロジェクトにいくつかのテストコードがあります。モックやテストユーティリティのようなものもあります。次に、これらのテストユーティリティを拡張機能のテストで使用したいと思います。依存関係を宣言したので、本番コードではこれは機能します。ただし、依存関係はテストに対して保持されないようです。テストを実行すると、不足しているクラスのコンパイルエラーが発生します。これらのクラスは、コアプロジェクトのテストコードからのものです。

依存関係にもテストスコープのテストコードを含める必要があることをsbtに伝えるにはどうすればよいですか? 「エクステンション」プロジェクトのテストコードでモックを再利用できるようにするには?

73
Gamlor

そのようです:

dependencies = Seq(coreProject % "compile->compile;test->test")

これについては、 Getting-Started-Multi-Project ガイドの「構成ごとのクラスパスの依存関係」で説明しています。

79
retronym

これは、最初のプロジェクト宣言の後に.dependsOn(coreProject % "compile->compile;test->test")を使用して行うこともできます。

lazy val coreProject = Project("core-project")
lazy val extensions = Project("extensions").dependsOn(coreProject % "compile->compile;test->test")
31
Ryan Gross