Scala sbt 12自定义测试目录

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文档,为了让它开箱即用,我们需要

我正在从sbt 11升级到sbt 12.2,我们目前有以下项目结构:

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
)