如何使用SBT在测试配置之间共享类

Bri*_*rro 18 scala sbt

我已按照SBT文档中的说明设置测试配置.我有三个测试配置Test,IntegrationTest和AcceptanceTest.所以我的src目录如下所示:

  • SRC /
    • 验收/
      • 斯卡拉/
    • 它/
      • 斯卡拉/
    • 测试/
      • 斯卡拉/

我的问题是,如何配置SBT以允许在这些配置之间共享类?示例:我在"it"配置中有一个类,用于简化数据库设置和拆除.我在"接受"配置中的一个验收测试可以使用这个类.如何使"接受"中的"it"类可用于测试

提前谢谢了.

Mar*_*rah 10

配置可以扩展另一个配置以使用该配置的依赖项和类.例如,自定义测试配置部分显示自定义配置的此定义:

lazy val FunTest = config("fun") extend(Test)
Run Code Online (Sandbox Code Playgroud)

extend部分意味着编译的常规测试源将位于fun源的类路径上.在您的情况下,声明acceptance配置以扩展it配置:

lazy val AcceptanceTest = config("acceptance") extend(IntegrationTest)
Run Code Online (Sandbox Code Playgroud)


gil*_*och 10

如果你想坚持预定义的配置,而不是定义换新的,因为这两个TestIntegrationTest延长Runtime(人们所期望的IntegrationTest延伸Test......),你可以使用以下命令:

dependencyClasspath in IntegrationTest := (dependencyClasspath in IntegrationTest).value ++ (exportedProducts in Test).value
Run Code Online (Sandbox Code Playgroud)

这应该将您定义的所有类Test放在IntegrationTestclasspth 上。

##编辑:

感谢@mjhoy,我才意识到更好的解决方案:

lazy val DeepIntegrationTest = IntegrationTest.extend(Test)
Run Code Online (Sandbox Code Playgroud)