8
我正在尝试配置我的play framework应用程序,以便它在运行时使用mysql数据库,并在内存数据库中进行测试。 当我运行测试时,它连接到mysql数据库而不是内存数据库。 任何人都知道为什么?玩框架在内存中使用h2数据库进行单元测试
这是我的配置:
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("[email protected]", "Bob", "secret").save();
assertNotNull(User.authenticate("[email protected]", "secret"));
assertNull(User.authenticate("[email protected]", "badpassword"));
assertNull(User.authenticate("[email protected]", "secret"));
}
});
另一个好方法是使用DEV H2和测试application.conf,一对在生产模式下只有一个分离应用prod.conf文件 – Loic 2015-02-08 07:30:18
使用MySQL是的,我认为这将是解决问题的方法。希望有一个更简单/更干净的方式来做到这一点。谢谢 – Ciaran0 2015-02-08 09:47:51
作为一个方面说明:我使用MariaDB4j作为嵌入式数据库进行测试。这是一个真正的MySQL兼容数据库,而不是H2的不完整MySQL模式。 https://github.com/vorburger/MariaDB4j – akkie 2015-02-10 07:30:28