【问题标题】:How to set System property for a scalatest from sbt command line如何从 sbt 命令行为 scalatest 设置系统属性
【发布时间】:2015-07-03 16:15:31
【问题描述】:

一个 ScalaTest 套件正在使用

 System.getProperty("my.command-line.property")

实现这个设置的sbt命令行是什么?

我试过了

SBT_OPTS="-Dmy.command-line.property=foo" sbt "test-only <path to test suite"

还有:

JAVA_OPTS="-J-Dmy.command-line.property=foo" sbt "test-only <path to test suite"

最后:

sbt/sbt  '; set javaOptions in Test  +="-Dtest.num.points=500000"; \
project mllib; test-only org.apache.spark.mllib.optimization.LBFGSSuite'

当使用任何这些尝试时,System.getProperty 会出现空白。

一种可行的方法是在 Intellij 中运行 ScalaTest,并在运行配置中将 JVM 参数设置为 -Dmy.command-line.property=foo

【问题讨论】:

  • 你会分叉你的测试吗? (你的构建文件中有这行:fork in Test := true 吗?)

标签: scala sbt scalatest


【解决方案1】:

将此添加到您的项目设置中:

javaOptions in Test += "-Dmy.command-line.property=foo"

如果你有很多设置,你可以将它们放在一个配置文件中并像这样传递它:

javaOptions in Test += "-Dconfig.file=conf/test.conf"

编辑: 要从命令行传递它: 我猜你是在这个答案之后:How to set system properties for runMain on command line?

编辑 2: 你试过这个吗? sbt';设置 javaOptions += "-Dconfig.resource=../application.conf" ;测试'

【讨论】:

  • 你的回答没有解决这个问题的细节:runMain is not applicable to scalatest
  • @javadba 我没有给你直接的答案。你可能已经猜到了答案,:) 如果没有看到我的EDIT 2
  • 我部分同意:以这种方式塑造我的命令行以查看 scalatest 是否可以使用它。更新:这种方法显然不适用于 scalatest。
  • Edit 2 可以在 unix 上运行,但不能在 windows 上运行,因为需要双引号包装器,关于如何使它在 windows 上运行的任何想法?
【解决方案2】:

这对我有用:

val myFoo = sys.props("foo.property")

和:

SBT_OPTS="-Dfoo.property=foo" sbt "testOnly *your_test_package*"

【讨论】:

  • 在最大规模的套件中?
  • 您的测试代码中的第一行,第二行命令行(如何设置您的属性并将测试执行限制为您想要的包)
【解决方案3】:

您的第三种方式几乎有效(如果设置了fork in Test := true)。但是你得先换成项目:

sbt/sbt  '; project mllib; set javaOptions in Test  +="-Dtest.num.points=500000"; \
test-only org.apache.spark.mllib.optimization.LBFGSSuite'

【讨论】:

  • 有没有办法将其应用于每个项目?我正在尝试设置一个标志来限制 CI 构建期间的日志记录,但我不想在每个项目中都设置它。而且因为它只适用于 CI,所以我需要一个命令行选项
【解决方案4】:

对于某些套件,您可以覆盖 beforeAll() 挂钩并在那里进行初始化。这并不能保证此初始化将在任何 Spark 初始化之前运行,但对于许多情况它确实足够早。

override def beforeAll() {
  super.beforeAll()
  System.setProperty("java.io.tmpdir", "C:\\dev\\Temp")
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-18
    • 1970-01-01
    • 2011-11-13
    • 2015-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    相关资源
    最近更新 更多