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