【发布时间】:2021-08-01 04:34:52
【问题描述】:
我有一个非常简单的项目。
build.sbt:
scalaVersion := "2.13.5"
lazy val testSettings = Seq(
Test / javaOptions += "-Dconfig.resource=/test.conf"
)
libraryDependencies ++= Seq(
"org.scalatest" %% "scalatest" % "3.2.3" % Test,
"com.typesafe" % "config" % "1.4.1"
)
resources文件夹下的两个配置文件:
应用程序.conf
some-value = "value from application.conf file"
test.conf
some-value = "value from test.conf file"
而且只有 1 个规格测试类:
一些测试规范:
class SomeTestSpec extends AnyFlatSpec with Matchers {
val config: Config = ConfigFactory.load()
"some test" should "read and print from test.conf" in {
val value = config.getString("some-value")
println(s"value of some-value = $value")
value shouldBe "value from test.conf file"
}
}
如果失败则运行测试时:
"value from [application].conf file" was not equal to "value from [test].conf file"
ScalaTestFailureLocation: SomeTestSpec at (SomeTestSpec.scala:12)
Expected :"value from [test].conf file"
Actual :"value from [application].conf file"
为什么规范读取文件application.conf 而不是test.conf? build.sbt 有什么问题吗?:
lazy val testSettings = Seq(
Test / javaOptions += "-Dconfig.resource=/test.conf"
)
【问题讨论】:
-
尝试删除整个
testSettings并将此Test / javaOptions += "-Dconfig.resource=/test.conf"留在顶层。 -
我这样做了,但我得到了相同的结果,规范仍然是从 application.conf 而不是 test.conf ...
-
将
test.conf移动到src/test/resources/application.conf怎么样? -
是的,它奏效了。但我的问题仍然是
Test / javaOptions += "-Dconfig.resource=/test.conf"的这条线是什么?因为规范是从 application.conf(src/test/resources/application.conf)而不是test.conf(-Dconfig.resource=/test.conf)中读取的 -
不,在那种情况下根本不需要这条线,不知道为什么它不起作用或根本不应该起作用。
标签: scala scalatest typesafe-config