Scala sbt 12自定义测试目录
我正在从sbt 11升级到sbt 12.2,我们目前有以下项目结构:Scala sbt 12自定义测试目录,scala,sbt,Scala,Sbt,我正在从sbt 11升级到sbt 12.2,我们目前有以下项目结构: src main scala/... test shared scala/... unit scala/... integration scala/... functional scala/... 当我升级到sbt 12时,测试不再运行,我们得到:没有要为unit:test运行的测试。看看SBT12文档,为了让它开箱即用,我们需要
src
main
scala/...
test
shared
scala/...
unit
scala/...
integration
scala/...
functional
scala/...
当我升级到sbt 12时,测试不再运行,我们得到:没有要为unit:test运行的测试。看看SBT12文档,为了让它开箱即用,我们需要重新构造测试源的文件夹和包结构。然而,我想在重组之前先看看我们是否还有其他的事情可以做
我们的测试配置如下(仅显示单元测试配置,其他测试类型具有相同的配置):
lazy val project=project(ID、BASE、settings=platformSettings)
.configs(共享)
.configs(单元测试)
lazy val Shared=config(“Shared”).extend(运行时)
lazy val sharedSettings=配置(共享,“共享”)
lazy val UnitTests=config(“单元”)扩展(共享)
lazy val UNITESTSETTINGS=配置(单元测试,“单元”)
专用def配置(配置:配置,测试类型:字符串)={
inConfig(配置)(默认值.testSettings)+inConfig(配置)(设置(testType))
}
专用def设置(测试类型:字符串):Seq[设置[]]=Seq(
源目录
lazy val project = Project(ID, BASE, settings = platformSettings)
.configs(Shared)
.configs(UnitTests)
lazy val Shared = config("shared").extend(Runtime)
lazy val sharedSettings = configure(Shared, "shared")
lazy val UnitTests = config("unit") extend(Shared)
lazy val unitTestSettings = configure(UnitTests, "unit")
private def configure(configuration: Configuration, testType: String) = {
inConfig(configuration)(Defaults.testSettings) ++ inConfig(configuration)(settingsFor(testType))
}
private def settingsFor(testType: String): Seq[Setting[_]] = Seq (
sourceDirectory <<= baseDirectory(_ / "src" / "test" / testType),
testListeners <<= (target in Compile).map({ (target) => Seq(new JUnitXmlTestsListener(target.getAbsolutePath()))}),
parallelExecution := false
)