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

时间:2015-06-05 15:31:44

标签: scala intellij-idea specs2

我在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中的Build / Configurations ...菜单),但这没有任何区别。

谢谢。

3 个答案:

答案 0 :(得分:5)

使用SBT

将自定义配置文件放在buckets = new Array<Bucket>(); for(int i=1;i<BUCKET_COUNT;i++){ buckets.add(new Bucket(this,(rand.nextInt((int)W)-45),BUCKET_MARGIN*i)); } //BUCKET_COUNT = 3; //BUCKET_MARGIN = 220;

然后,将其添加到您的src/test/resources/application.test.conf

build.sbt

答案 1 :(得分:0)

您可以将带有路径的字符串传递给资源文件,“ConfigFactory”将从文件系统加载文件,而不是使用类加载器。请参阅overview

您还可以使用ConfigValueFactory构建自己的配置。请参阅ConfigValueFactory

我已成功使用前者进行测试,但后者看起来也很有趣。

答案 2 :(得分:0)

您可以通过项目设置在IntelliJ中添加application.conf:

文件 - 项目结构 - 模块 - 来源 - 选择文件夹(例如src / ressources) - &gt;标记为:单击资源

ressources文件夹将添加到右侧的窗格中。现在像

import com.typesafe.config.ConfigFactory
val value = ConfigFactory.load().getString("my.secret.value") // or
val db = Database.forConfig("h2mem1")

开始工作。