我的应用程序由两个项目组成:root
和commons
。 root
取决于commons
。制作我的build.sbt
以便聚合主要和测试:
lazy val commons = RootProject(file("../commons"))
lazy val root = (project in file("."))
.enablePlugins(PlayScala)
.aggregate(commons)
.dependsOn(commons % "test->test;compile->compile")
问题是,当我从commons
运行root
次测试时,他们不会继承root
application.conf
中定义的conf。示例:
class EventSourceTest extends FlatSpec with Matchers with ScalaFutures {
val env: Environment = play.api.Environment.simple()
val configuration: Configuration = Configuration.load(env) // doesn't contain root conf
// [...]
}
如何使commons
测试使用application.conf
中root
定义的配置?
答案 0 :(得分:2)
我相信你正在努力解决你不应该遇到的问题。如果commons和root是2个不同的项目(即使它们是子项目单个sbt项目),您的测试也不应跨越项目边界。
如果您正在考虑集成级别测试,那么从 root 调用的 commons 代码应该负责加载它所依赖的配置。
答案 1 :(得分:0)
当您运行sbt时,您可以选择指定要加载的conf文件,并且可以提供读取此配置并加载相应conf文件的自定义逻辑。
作为首发,您可以做以下事情:
Option(System.getProperty("config.file")) match {
case Some(path) => ConfigFactory.parse(...=)
...
}
你打电话给你的测试
sbt -Dconfig.file=/path/to/config/file test