Scala sbt条件if else样式配置

Scala sbt条件if else样式配置,scala,sbt,integration-testing,scalatest,Scala,Sbt,Integration Testing,Scalatest,我希望能够使用命令行在并行和串行执行scala测试之间切换 “test.par”系统属性的工作示例: val parallelTestOpt = Option(System.getProperty("test.par")) testOptions in IntegrationTest += Tests.Argument( //Configure distributor's pool size parallelTestOpt.map(count =>s"-P$count").get

我希望能够使用命令行在并行和串行执行scala测试之间切换

“test.par”系统属性的工作示例:

val parallelTestOpt = Option(System.getProperty("test.par"))

testOptions in IntegrationTest += Tests.Argument(
  //Configure distributor's pool size
  parallelTestOpt.map(count =>s"-P$count").getOrElse("-P1")
)

lazy val root = (project in file("."))
  .configs(IntegrationTest)
  .settings(Defaults.itSettings,
      //If suites are executed in parallel
      IntegrationTest / parallelExecution := parallelTestOpt.exists(_ != "1"),
      IntegrationTest / testForkedParallel := parallelTestOpt.exists(_ != "1")
  )
“有问题”的部分是
parallelTestOpt.map(count=>s“-p$count”).getOrElse(“-P1”)
。我不想在未指定“test.par”属性时提供默认值“-P1”。实现这一目标的最佳实践是什么


也许整个概念是错误的,我应该用另一种方式来做?

< P>作为一种替代方法,考虑把并行性的关注分成一个

并使用testpar 6执行,以使用6个线程池运行


针对注释,为了编译时安全,请尝试

commands += Command.single("testpar") { (state, numOfThreads) =>
  val extracted = Project.extract(state)
  val stateWithParallel= extracted.appendWithSession(
    Seq(
      IntegrationTest / testOptions  += Tests.Argument(s"-P$numOfThreads"),
      IntegrationTest / parallelExecution := true,
      IntegrationTest / testForkedParallel := true,
    ),
    state
  )
  extracted.runTask(IntegrationTest / test, stateWithParallel)
  state
}

谢谢你的回答,我喜欢关注分离的想法。但是由于语句是作为字符串生成的,我的IDE无法帮助检查语法和突出显示,有没有办法解决这个问题?
commands += Command.single("testpar") { (state, numOfThreads) =>
  val extracted = Project.extract(state)
  val stateWithParallel= extracted.appendWithSession(
    Seq(
      IntegrationTest / testOptions  += Tests.Argument(s"-P$numOfThreads"),
      IntegrationTest / parallelExecution := true,
      IntegrationTest / testForkedParallel := true,
    ),
    state
  )
  extracted.runTask(IntegrationTest / test, stateWithParallel)
  state
}