配置IntelliJ所以它需要一个特定的配置文件来运行测试?

时间:2015-01-12 13:38:39

标签: intellij-idea playframework functional-testing

我正在使用Play Framework 2.3和IntelliJ IDEA 14.我在我的应用程序中使用了Mailer插件。我写了一些功能测试,当我在SBT控制台中运行test命令后,将此行添加到 build.sbt 后,它可以正常工作:

javaOptions in Test += "-Dconfig.file=conf/application.test.conf"

这个文件是 conf / application.test.conf

smtp.mock=yes

不幸的是,当我直接从IntelliJ运行测试时,我收到此错误:

java.lang.RuntimeException: smtp.host needs to be set in application.conf in order to use this plugin (or set smtp.mock to true)

我尝试使用VM参数-Dconfig.file=conf/application.test.conf启动这些测试,但没有成功。

以下是我尝试执行的测试的两个示例:

@Test
public void testWithServer() {
    running(testServer(3333), () -> {
        assertThat(WS.url("http://localhost:3333").get().get(1000).getStatus()).isEqualTo(OK);
    });
}

@Test
public void testWithBrowser() {
    running(testServer(3333), HTMLUNIT, browser -> {
        browser.goTo("http://localhost:3333");
        assertThat(browser.$("title").getText()).isEqualTo("Welcome");
    });
}

有人可以帮我吗?

谢谢!

1 个答案:

答案 0 :(得分:9)

除非我弄错了,否则SBT会使用config.file设置,因此conf/application.test.conf文件。因此,即使您通过VM Options文本字段指定config.file设置,IntelliJ IDEA在运行测试时也不会加载它及其包含的设置。相反,您必须将-Dsmtp.mock=yes设置(application.test.conf文件中的任何其他设置)放在VM选项文本字段中。

如果可行,您可以将参数添加到“VM选项”文本字段,并将其添加到“运行/调试配置”对话框中“默认”组下的“JUnit”设置,这样您创建的任何新测试都会预设它。