1. ホーム
  2. scala

[解決済み] マルチプロジェクトにおけるSBTのテスト依存性。依存するプロジェクトでテストコードを利用できるようにする

2023-04-14 11:23:39

質問

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)
  )

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

どうすれば sbt に依存関係が test-scope のテストコードも含むと伝えることができますか?そうすれば、'exension'プロジェクトのテストコードで私のモックを再利用することができるでしょうか?

どのように解決するのですか?

このように

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

これは、次のセクションで説明されています "設定ごとのクラスパスの依存関係" 。 開始-マルチプロジェクト のガイドで説明されています。