【问题标题】:Set default env variable for test configuration in sbt在 sbt 中为测试配置设置默认环境变量
【发布时间】:2016-05-20 02:21:24
【问题描述】:

在我的应用中,我有基于 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...

【问题讨论】:

    标签: scala sbt


    【解决方案1】:

    我无法按照描述复制您的问题:

    //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 窗口中设置变量。

    【讨论】:

    • 是的,问题出在 IntelliJ Idea 中。谢谢
    • 我发现没有必要“fork in Test”
    猜你喜欢
    • 2015-08-18
    • 2018-06-27
    • 1970-01-01
    • 2017-02-15
    • 2023-04-10
    • 1970-01-01
    • 2016-08-11
    • 1970-01-01
    • 2015-09-20
    相关资源
    最近更新 更多