簡體   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