Sto provando a configurare la mia applicazione framework di gioco in modo che utilizzi un database mysql durante l'esecuzione e un database in memoria per i test. Quando eseguo i test si connette al database mysql e non al database in memoria. Qualcuno sa perché?play framework utilizza nel database di memoria h2 per i test di unità
Questo è il mio config:
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=""
questa è la mia prova:
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"));
}
});
Un altro buon approccio sarebbe quello di utilizzare h2 per DEV e TEST in application.conf, una da utilizzare per MySQL in modalità di produzione solo con un file separato application-prod.conf – Loic
Sì, penso che sarà la soluzione che andrà male. Speravo che esistesse un modo più semplice/pulito per farlo. Grazie – Ciaran0
Come nota a margine: utilizzo MariaDB4j come database incorporato per i test. È un vero database compatibile MySQL invece della modalità MySQL incompleta di H2. https://github.com/vorburger/MariaDB4j – akkie