在sbt中为测试配置设置默认的env变量

时间:2016-05-19 17:38:55

标签: scala sbt

在我的应用程序中,我有基于SCALA_ENV变量的运行时配置初始化

在build.sbt中我需要检查是否设置了SCALA_ENV var,如果没有设置为" test"但仅限于测试配置,以便

sbt test

在开发人员计算机上本地运行而没有明确设置SCALA_ENV它总是使用测试环境配置

我试过

fork in test := true
envVars in Test := Map("SCALA_ENV" -> "test")

然后在测试的某个地方

System.getenv("SCALA_ENV")

但它总是返回null ...

1 个答案:

答案 0 :(得分:11)

我不能像你所说的那样复制你的问题:

//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")

测试代码:

import org.scalatest.FlatSpec

class TestEnv extends FlatSpec {

  it should "get the correct env var value" in {
    assert("test" === System.getenv("SCALA_ENV"))
  }

}

如果我使用sbt test运行它,它会通过。注意,我使用 sbt 0.13.8 ,所以如果您的版本不同,您可能会面临一些疯狂的错误。当我从IntelliJ Idea运行它时 - 它失败了,并且毫无疑问为什么 - IDE使用自己的测试运行器并跳过sbt。作为解决方法,您可以在Run/Debug Configurations - >中设置变量Environment variables窗口。