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


83

一部のプロジェクトが相互に依存している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に伝えるにはどうすればよいですか?'exension'プロジェクトのテストコードでモックを再利用できるようにするには?

回答:


91

そのようです:

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

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


1
他の人がここで混乱しないように、これは、プロジェクト定義で依存関係を設定することを示唆しています(ライブラリの依存関係ではありません)。
ライアングロス

SBT以外のニンザの場合、ビルドファイルをもっと表示できますか?のような定義はlazy val foo = project.settings(...).dependencies(Seq(bar % "compile->compile;test->test"))機能しません。@RyanGross、あなたは?
Abhijit Sarkar 2018年

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.