繁体   English   中英

如何为specs2测试指定不同的application.conf?

[英]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中的构建/配置...菜单),但这没有任何区别。

谢谢。

使用SBT

将自定义配置文件放在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM