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

use*_*547 5 scala intellij-idea specs2

我在Scala中有一个IntelliJ IDEA项目,并开始添加org.specs2测试.我无法找到如何放入将由测试使用的application.conf文件.

我尝试过以下操作:

test
    resources
        application.conf 
    scala
        mypackage.myname
            MyTestSpec
Run Code Online (Sandbox Code Playgroud)

然后叫

ConfigFactory.load()
Run Code Online (Sandbox Code Playgroud)

在MyTestSpec中.但是,没有加载任何来自src文件夹的resources子文件夹的application.conf,也没有加载.我的目标是能够针对某些测试环境编写集成测试(请不要讨论这个目标的有效性......).

如何做到这一点还是有更好的方法去做?我今天开始阅读specs2文档,我对Scala也很陌生,所以我只是假设这是测试配置应该如何工作.

到目前为止,我已尝试在测试的构建配置中指定-Dconfig.file = my_test_conf_full路径(来自IntelliJ中的构建/配置...菜单),但这没有任何区别.

谢谢.

Mat*_*aun 6

使用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,
Run Code Online (Sandbox Code Playgroud)


Bob*_*ish 0

您可以传递一个包含资源文件路径的字符串,“ConfigFactory”将从文件系统加载该文件,而不是使用类加载器。请参阅概述

您还可以使用ConfigValueFactory. 看ConfigValueFactory

我已经成功地将前者用于我的测试,但后者看起来也很有趣。