我已按照SBT文档中有关设置测试配置的说明进行操作。我有三个测试配置Test,IntegrationTest和AcceptanceTest。所以我的src目录如下所示:
我的问题是,如何配置SBT以允许在这些配置之间共享类?示例:我在“it”配置中有一个类,用于简化数据库设置和拆除。我在“接受”配置中的一个验收测试可以使用这个类。如何在“接受”
中为测试提供“it”类非常感谢提前。
答案 0 :(得分:7)
配置可以扩展另一个配置以使用该配置的依赖项和类。例如,custom test configuration部分显示了自定义配置的此定义:
lazy val FunTest = config("fun") extend(Test)
extend
部分表示编译的普通测试源将位于fun
源的类路径中。在您的情况下,声明acceptance
配置以扩展it
配置:
lazy val AcceptanceTest = config("acceptance") extend(IntegrationTest)
答案 1 :(得分:3)
答案 2 :(得分:1)
SBT使用Maven default directory layout。
它会识别低于src/test/scala
的文件夹,以便与src/main/scala
一起编译。
因此,如果您移动src/test/scala
下的其他文件夹,SBT将编译它们,您可以在它们之间共享代码。 e.g:
└── scala
├── acceptance
│ └── scala
│ └── Acceptance.scala
├── it
│ └── scala
│ └── IT.scala
└── Test.scala
运行sbt test
将编译目录中的所有三个文件。因此,通过此Acceptance参考并可以创建一个新的IT类,例如。
答案 3 :(得分:0)
如果您想坚持使用预定义的配置而不是定义新的配置,并且由于Test
和IntegrationTest
都扩展了Runtime
(有人希望IntegrationTest
扩展{ {1}}…),则可以使用以下内容:
Test
这应该将您在dependencyClasspath in IntegrationTest := (dependencyClasspath in IntegrationTest).value ++ (exportedProducts in Test).value
中定义的所有类放在Test
类上。