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 。
答案 0 :(得分:1)
你的第三种方式几乎有效(如果设置了fork in Test := true
)。但是你必须先改变项目:
sbt/sbt '; project mllib; set javaOptions in Test +="-Dtest.num.points=500000"; \
test-only org.apache.spark.mllib.optimization.LBFGSSuite'
答案 1 :(得分:0)
这对我有用:
val myFoo = sys.props("foo.property")
和
SBT_OPTS="-Dfoo.property=foo" sbt "testOnly *your_test_package*"
答案 2 :(得分:0)
对于某些套件,您可以覆盖beforeAll()
挂钩并在那里进行初始化。这并不能保证这个初始化会在任何Spark初始化之前运行,但它确实在很多情况下足够早。
override def beforeAll() {
super.beforeAll()
System.setProperty("java.io.tmpdir", "C:\\dev\\Temp")
}
答案 3 :(得分:-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&#39 ;; set javaOptions + =&#34; -Dconfig.resource = .. / application.conf&#34; ;测试&#39;