多项目中的SBT测试依赖性:使测试代码可用于相关项目

Gam*_*lor 72 testing scala 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)
  )
Run Code Online (Sandbox Code Playgroud)

现在我在test-folder的'core'项目中有一些测试代码.还有模拟和测试实用程序之类的东西.现在我想在扩展的测试中使用这些测试实用程序.对于生产代码,这是有效的,因为我已经声明了依赖.然而,似乎依赖性不适用于测试.当我运行测试时,我得到了缺少类的编译错误.这些类来自核心项目中的测试代码.

如何告诉sbt依赖项还应该包含测试范围的测试代码?这样我可以在'exension'项目的测试代码中重用我的模拟?

ret*_*nym 81

像这样:

dependencies = Seq(coreProject % "compile->compile;test->test")
Run Code Online (Sandbox Code Playgroud)

这在" 入门 - 多项目指南"的"按配置类路径依赖关系"一节中讨论.


Rya*_*oss 34

您也可以.dependsOn(coreProject % "compile->compile;test->test")在初始项目声明后执行此操作.

lazy val coreProject = Project("core-project")
lazy val extensions = Project("extensions").dependsOn(coreProject % "compile->compile;test->test")
Run Code Online (Sandbox Code Playgroud)

  • 相关文档:https://www.scala-sbt.org/release/docs/Multi-Project.html#Per-configuration+classpath+dependencies (2认同)