繁体   English   中英

如何在SBT中使用ForkOptions来更改子项目中的测试工作目录?

[英]How to use ForkOptions in SBT to change working directory for test within subproject?

我目前有一个多项目SBT构建,其下有2个项目,其中一个项目依赖于另一个项目。 从属的测试需要从其工作目录下的某个目录结构加载文件。 它使用配置文件中的相对路径来指定此目录结构。

问题在于,取决于我是通过我的IDE运行此测试(在子项目级别具有工作目录)还是在SBT伞形项目级别(在伞级别的工作目录),这使我的测试能力有所不同通过其相对路径加载此文件并成功。

我需要使用相对路径,以便其他开发此项目的开发人员可以使用现成的签入代码,并且在项目的两个级别复制目录结构和包含的文件是不可能的。 我真正需要做的是直接SBT在进行测试时将工作目录移动到子项目中,这样无论测试从何处开始,目录结构都可以保持不变。

SBT提供了一个ForkOptions类( http://www.scala-sbt.org/0.13.0/api/index.html#sbt.ForkOptions ),在此进一步描述: http//www.scala-sbt.org/0.13在页面底部的/docs/Forking.html ,通过它可以为一个分叉的JVM提供一个工作目录,但是没有提供关于如何在root build.sbt中设置配置的好例子。为测试任务提供ForkOptions实例。

有没有人有使用这个课程的经验,和/或任何人都可以提供一些指导从SBT中的多项目构建中获取此功能?

解决方案是在根build.sbt中为项目定义提供以下设置。

lazy val yourProject = project.settings(
    fork := true,
    baseDirectory in test := file("yourProject")
)

这些导致JVM为该子项目中的测试进行派生,并将工作目录更改为该子项目的基础。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM