我目前正在为 Play 应用程序创建 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() {
}
});
}
...
我认为问题是数据库连接问题,当然在运行模式下运行play时一切正常。如果我不使用 FakeApplication 那么它也很好,但我需要它。 startFakeApplication 方法中的所有数据库信息都来自 conf/application.conf 所以它们是正确的。
奇怪的是我在运行测试时在输出屏幕中也有这一行:
[info] play - datasource [jdbc:mysql://myhost/releaseDB?characterEncoding=UTF-8] bound to JNDI as DefaultDS
我在这里错过了什么重要的事情吗? 谢谢
最佳答案
您是否将设置映射传递给某处的 fakeApplication?像这样的东西:
FakeApplication fakeApplication = fakeApplication(settings);
另一种选择是拥有一个单独的 application-test.conf
文件,并在您的 build.sbt
文件中包含以下内容:
javaOptions in Test ++= Seq(
"-Dconfig.file=conf/application-test.conf"
)
关于mysql - 使用 play2 框架运行 JUnit 测试时出现 mysql 连接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23514772/