[英]How to specify different application.conf for specs2 tests?
我在Scala中有一个IntelliJ IDEA项目,并开始添加org.specs2测试。 我无法找到如何放入将由测试使用的application.conf文件。
我尝试过以下操作:
test
resources
application.conf
scala
mypackage.myname
MyTestSpec
然后叫
ConfigFactory.load()
在MyTestSpec中。 但是,没有加载任何来自src文件夹的resources子文件夹的application.conf,也没有加载。 我的目标是能够针对某些测试环境编写集成测试(请不要讨论这个目标的有效性......)。
怎么去做这个还是有更好的方法去做呢? 我今天开始阅读specs2文档,我对Scala也很陌生,所以我只是假设这是测试配置应该如何工作。
到目前为止,我已尝试在测试的构建配置中指定-Dconfig.file = my_test_conf_full路径(来自IntelliJ中的构建/配置...菜单),但这没有任何区别。
谢谢。
将自定义配置文件放在src/test/resources/application.test.conf
。
然后,将其添加到build.sbt
:
// When running tests, we use this configuration
javaOptions in Test += s"-Dconfig.file=${sourceDirectory.value}/test/resources/application.test.conf",
// We need to fork a JVM process when testing so the Java options above are applied
fork in Test := true,
如果您已在“运行/调试”菜单中为测试创建了配置:
假设您的test.conf文件位于主conf目录中,您可以使用此“-Dconfig.resource = test.conf”。
如果你想把它保存在test / resources中那么它就是“-Dconfig.resource = resources / test.conf”。
在JUnit配置菜单中,将该行添加到“VM选项”。
在Specs2配置菜单中,将该行添加到“VM参数”。
您可以将带有路径的字符串传递给资源文件,“ConfigFactory”将从文件系统加载文件,而不是使用类加载器。 见概述 。
您还可以使用ConfigValueFactory
构建自己的配置。 请参见ConfigValueFactory
。
我已成功使用前者进行测试,但后者看起来也很有趣。
您可以通过项目设置在IntelliJ中添加application.conf:
文件 - 项目结构 - 模块 - 源 - 选择文件夹(例如src / ressources) - >标记为:单击资源
ressources文件夹将添加到右侧的窗格中。 现在的事情就像
import com.typesafe.config.ConfigFactory
val value = ConfigFactory.load().getString("my.secret.value") // or
val db = Database.forConfig("h2mem1")
开工。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.