有条件地执行build.sbt的一部分

时间:2015-07-16 18:39:59

标签: scala sbt

以下是build.sbt的一个片段,当我想调试单个测试时,我会将其注释掉。

// *** Uncomment These Two Lines If you are debugging individual Test ***

//fork in Test := false

//parallelExecution in Test := false

我想做的不是手动注释上述片段,而是根据我指定给sbt的环境值运行上述条件(例如"test-only -Dindividual_test=true")。这样,我可以从IDE编写各种测试和集成的运行配置。

我知道如果我们这样离开它,有一天,开发人员会推动这个变更,因为这个没有记录。

这是我们需要在build.scala中做些什么吗?

或者是否有其他方法可以实现这一目标?

1 个答案:

答案 0 :(得分:2)

您可以创建一个单独的设置键,您可以在交互式会话中更改该键:

build.sbt

val individualTest = Def.settingKey[Boolean]("Whether to run tests individually")

individualTest := false // individualTest is a setting like every other

fork in Test := !individualTest.value

parallelExecution in Test := !individualTest.value

现在,您可以在会话中以交互方式切换individualTest

> set individualTest := true
> testOnly
// fork in Test is false
// parallelExcecution is false
> set individualTest := false
// fork in Test is true
// parallelExcecution is true

如果要从命令行运行此命令,请将每个单独的sbt命令放在引号中:

sbt 'set individualTest := true' 'testOnly myTest'