在我的应用程序中,我有基于SCALA_ENV变量的运行时配置初始化
在build.sbt中,我需要检查是否设置了SCALA_ENV var,如果没有设置为"test"但是仅用于测试配置,那么当
sbt test
Run Code Online (Sandbox Code Playgroud)
在开发人员计算机上本地运行而不显式设置SCALA_ENV它将始终使用测试环境配置
我试过了
fork in test := true
envVars in Test := Map("SCALA_ENV" -> "test")
Run Code Online (Sandbox Code Playgroud)
然后在测试的某个地方
System.getenv("SCALA_ENV")
Run Code Online (Sandbox Code Playgroud)
但它总是返回null ...
Vit*_*nko 13
我不能像你所描述的那样转载你的问题:
//build.sbt
name := "test-env"
version := "1.0"
scalaVersion := "2.11.8"
fork in Test := true
envVars in Test := Map("SCALA_ENV" -> "test")
libraryDependencies ++= Seq("org.scalactic" %% "scalactic" % "2.2.6", "org.scalatest" %% "scalatest" % "2.2.6" % "test")
Run Code Online (Sandbox Code Playgroud)
和测试代码:
import org.scalatest.FlatSpec
class TestEnv extends FlatSpec {
it should "get the correct env var value" in {
assert("test" === System.getenv("SCALA_ENV"))
}
}
Run Code Online (Sandbox Code Playgroud)
如果我运行它sbt test,它会通过.注意,我使用sbt 0.13.8,所以如果你的版本不同,你可能会遇到一些疯狂的bug.当我从IntelliJ Idea运行它时 - 它失败了,并且毫无疑问为什么 - IDE使用自己的测试运行器并跳过sbt.作为解决方法,您可以在Run/Debug Configurations- > Environment variables窗口中设置变量.