【发布时间】:2015-04-06 20:50:48
【问题描述】:
我正在尝试配置我的 play 框架应用程序,以便它在运行时使用 mysql 数据库和用于测试的内存数据库。 当我运行测试时,它连接到 mysql 数据库而不是内存数据库。 有人知道为什么吗?
这是我的配置:
db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://localhost/communityRoots?characterEncoding=UTF-8"
db.default.user=root
db.default.password= ""
db.test.driver=org.h2.Driver
db.test.url="jdbc:h2:mem:play;MODE=MYSQL"
db.test.user=sa
db.test.password=""
这是我的测试:
running(fakeApplication(inMemoryDatabase("test")), new Runnable() {
public void run() {
new User("bob@gmail.com", "Bob", "secret").save();
assertNotNull(User.authenticate("bob@gmail.com", "secret"));
assertNull(User.authenticate("bob@gmail.com", "badpassword"));
assertNull(User.authenticate("tom@gmail.com", "secret"));
}
});
【问题讨论】:
-
另一种好方法是在 application.conf 中将 h2 用于 DEV 和 TEST,在生产模式下仅使用单独的 application-prod.conf 文件使用 MySQL
-
是的,我认为这将是不合适的解决方案。希望有一种更简单/更清洁的方法来做到这一点。谢谢
-
附带说明:我使用 MariaDB4j 作为嵌入式数据库进行测试。它是一个真正的 MySQL 兼容数据库,而不是 H2 不完整的 MySQL 模式。 github.com/vorburger/MariaDB4j
-
@Ciaran0 你是怎么让它最终工作的?
标签: java mysql database junit playframework