【问题标题】:Play specs with configuration break because "There is no started application"由于“没有启动的应用程序”,播放规范与配置中断
【发布时间】:2012-06-01 15:35:39
【问题描述】:

我在 application.conf 上将一些字符串外化到 HOCON。我正在访问这样的配置值:

import play.api.Play.current
import play.api.Play.configuration

configuration.getString("foo.bar").get()

尽可能早地在丢失密钥的情况下快速失败,就像文档说的那样。

现在我的一些依赖于 已配置 对象的测试失败,堆栈跟踪指出:

Caused by: java.lang.RuntimeException: There is no started application

我认为这与配置有关?我怎样才能解决这个问题? (测试是specs2

【问题讨论】:

    标签: configuration playframework-2.0 specs2


    【解决方案1】:

    你有FakeApplication 运行吗?如文档中所述:http://www.playframework.com/documentation/2.0/JavaTest 在您运行测试/测试方法之前?

    来自 Wiki 的示例:

    @Test
    public void findById() {
       running(fakeApplication(), new Runnable() {
          public void run() {
            Computer macintosh = Computer.find.byId(21l);
            assertThat(macintosh.name).isEqualTo("Macintosh");
            assertThat(formatted(macintosh.introduced)).isEqualTo("1984-01-24");
           }
       });
    }
    

    如果这不能解决您的问题,也许从 Stacktrace 提供更多信息会有所帮助。

    编辑:请仔细标记您的问题,提及playframeworkplayframework-2.0 是没有意义的

    【讨论】:

    • 那么,我需要将 每一个测试 包装在该块中,只是为了使用一些配置值?必须有一种更简单/非黑客的方式
    • 这是个好问题 :) 也许创建一个 Singleton 类并在您开始测试用例时进行初始化...我现在无法想出其他方法
    • 公平地说,这就是我实际使用的解决方案,我只是觉得我做错了什么。
    • 如果您使用的是specs2,您可以使用上下文implicitly
    猜你喜欢
    • 2020-05-09
    • 2019-03-23
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多