我目前正在为播放应用程序创建 JUnit 测试。当我尝试使用 FakeApplication 时,问题就来了。我在 JUnit 测试中创建了一个,但是当测试使用 fakeApplication 实例时,我得到了这个:
[error] Test controllers.MyClassTest.getMyProperty failed: play.api.Configuration$$anon$1: Configuration error[Cannot connect to database [default]]
这是我在 JUnit 测试类中的 Java 代码:
...
@BeforeClass
public static void startFakeApplication() {
Map<String, String> settings = new HashMap<String, String>();
settings.put("db.default.url", "jdbc:mysql://myhost/releaseDB?characterEncoding=UTF-8");
settings.put("db.default.driver", "com.mysql.jdbc.Driver");
settings.put("db.default.user", "release");
settings.put("db.default.password", "release");
settings.put("db.default.jndiName", "DefaultDS");
Helpers.start(fakeApplication);
}
...
然后我的测试方法(注意虚拟运行,所以不会造成任何麻烦):
...
public void getMyProperty() {
Helpers.running (fakeApplication, new Runnable() {
public void run() {
}
});
}
...
我认为问题是数据库连接问题,当然在运行模式下运行播放时,一切都很好。如果我不使用 FakeApplication 也可以,但我需要它。startFakeApplication 方法中的所有数据库信息都来自 conf/application.conf,所以它们是正确的。
奇怪的是,我在运行测试时在输出屏幕中也有这一行:
[info] play - datasource [jdbc:mysql://myhost/releaseDB?characterEncoding=UTF-8] bound to JNDI as DefaultDS
我在这里错过了什么重要的事情吗?谢谢