将命令行参数传递给sbt test

时间:2016-06-22 21:58:00

标签: scala testing sbt typesafe-config

在sbt run config中可以轻松传递,例如:

sbt "run -Dlib.lib1.version=2.0.0" 

但是当参数传递给sbt test时,类似的事情会失败。例如:

sbt "test -Dlib.lib1.version=2.0.0"

Official document表示sbt test不支持命令行参数:"测试任务不接受命令行参数并运行所有测试"。我想用不同版本的库运行测试,版本在reference.conf中保存为变量,我想在测试期间覆盖此变量,而不是每次都更改reference.conf。

那么,如何使用命令行参数将配置传递给sbt test?

2 个答案:

答案 0 :(得分:2)

我认为你可以避免通过配置文件传递库版本,你应该能够通过% "someConfig"告诉你想要不同的版本,例如:

libraryDependencies += "org.scalatest" %% "scalatest" % "2.2.4" % "test"
libraryDependencies += "org.scalatest" %% "scalatest" % "2.2.6" % "it"

请注意,这些内容不得冲突,您不能拥有lib % "test, it"lib % "test",因为您会发生冲突。

答案 1 :(得分:1)

$.holdReady(true); if (localStorage.getItem("theme") !== null) { $("#link1").attr("href", localStoage.getItem("theme")) } $.holdReady(false); $(function() { $("select").change(function(e) { $("#link1").attr("href", this.value); localStorage.setItem("theme", this.value); }); }); 任务允许您传递命令行参数,并且它们将受到尊重。

e.g。 testOnly允许我将-oU标志传递给shell中的最新运行器。

理论上,这只允许您将额外的参数传递给特定的测试。但是你可以利用另一个功能来解决这个问题。 testOnly parses wildcards in the test name

因此,您可以使用*通配符匹配每个测试并仍然传递参数

sbt "testOnly MyTest -- -oU"

将*之后的参数传递给测试运行器,并运行每个测试