【发布时间】:2014-06-24 06:02:25
【问题描述】:
我目前正在为一个播放应用程序创建 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
我在这里错过了什么重要的事情吗? 谢谢
【问题讨论】:
-
关于DB单元测试,可以看看acolyte.eu.org。
标签: mysql unit-testing junit playframework-2.0 database-testing