全局对象onStart失败了我的所有测试

时间:2013-06-10 12:54:37

标签: testing playframework-2.0 playframework-2.1

我进行了多次测试,它完美运行,直到我写出Global对象:

    @Override
    public void onStart(Application app) {
        Mails.plugin = app.plugin(MailerPlugin.class).email();
        Mails.from = app.configuration().getString("smtp.from");
        if (Mails.plugin != null) Logger.info("Mailer plugin successfully loaded"); 
        if (Mails.from != null) Logger.info("Mail account is " + Mails.from);

    }

这里我正在加载电子邮件插件。现在,当我尝试使用inMemoryDatabase运行我的fakeApplication时,我得到一个空指针异常。可能是因为fakeApplication不使用配置文件,并且无法从该文件加载配置。请帮我解决这个问题。

2 个答案:

答案 0 :(得分:2)

尝试在FakeApplication中添加自定义配置参数:

Map<String, Object> additionalConfiguration = new HashMap<String, Object>();
additionalConfiguration.put("smtp.from", "foo@bar.com");

running(fakeApplication(additionalConfiguration), new Runnable() {
...

答案 1 :(得分:1)

我找到了解决方案,因此我创建了假的Global类(或者你也可以模拟它):

class Global extends GlobalSettings{

}

然后可以通过它:

@BeforeClass
    public static void startApp() { 
        app = Helpers.fakeApplication(new Global());
        Helpers.start(app);
    }