有条件地执行build.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做的事情吗?

或者是否有其他方法来实现这一点?

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

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'

最新更新