Scala sbt条件if else样式配置
我希望能够使用命令行在并行和串行执行scala测试之间切换 “test.par”系统属性的工作示例: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
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
}