【问题标题】:SBT Test-Dependencies in Multiprojects: Make the Test-Code Available to Dependent Projects多项目中的 SBT 测试依赖关系:使测试代码可用于依赖项目
【发布时间】:2012-01-01 21:28:38
【问题描述】:

我有一个 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)
  )

现在我在测试文件夹的“核心”项目中有一些测试代码。还有诸如模拟和测试实用程序之类的东西。现在我想在扩展测试中使用这些测试实用程序。对于生产代码,这是可行的,因为我已经声明了一个依赖项。但是,似乎依赖性不适用于测试。当我运行测试时,我得到缺少类的编译错误。这些类来自核心项目中的测试代码。

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

【问题讨论】:

    标签: scala testing sbt


    【解决方案1】:

    像这样:

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

    这在 Getting-Started-Multi-Project 指南中的“每个配置的类路径依赖项”部分中进行了讨论。

    【讨论】:

    • 为了不让其他人在这里混淆,这建议您在项目定义中设置依赖项(而不是库依赖项)。
    • 对于非 SBT ninzas,你能显示更多的构建文件吗?像lazy val foo = project.settings(...).dependencies(Seq(bar % "compile->compile;test->test")) 这样的定义不起作用。 @RyanGross,你愿意吗?
    【解决方案2】:

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

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

    【讨论】:

    猜你喜欢
    • 2014-02-26
    • 2011-08-04
    • 2016-02-04
    • 2013-12-07
    • 2017-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多