我刚开始使用Play框架进行开发。我的生产数据库是一个MySQL实例。我正在尝试使用内存数据库实例中的H2来测试我的DAO类。 我的application.conf的相关部分是:
db {
default.driver=com.mysql.jdbc.Driver
default.url="jdbc:mysql://localhost:3306/production?useSSL=false"
default.username=root
default.password="**********"
test.driver=com.mysql.jdbc.Driver
test.url="jdbc:mysql://localhost:3306/test?useSSL=false"
test.username=root
test.password="**********"}
我的DAO课程是这样的:
public class EventDaoImpl implements EventDao {
private Database database;
@Inject
public EventDaoImpl(Database database) {
this.database = database;
}
我的测试类是这样的:
public class EventDaoImplIntegrationTest {
@Inject
private EventDao eventDao;
@Before
public void setup() {
Module testModule = new AbstractModule() {
@Override
public void configure() {
bind(EventDao.class).to(EventDaoImpl.class);
}
};
GuiceApplicationBuilder builder = new GuiceApplicationLoader()
.builder(new ApplicationLoader.Context(Environment.simple()))
.overrides(testModule);
Guice.createInjector(builder.applicationModule()).injectMembers(this);
//Helpers.start(application);
}
@After
public void teardown() {
//Helpers.stop(application);
}
我的问题是如何告诉Play我想使用测试数据源进行测试?
答案 0 :(得分:1)
这是我的方法:
我测试了application-test.conf,它包含:
include "application.conf"
# now override variables that we would like to from application.conf
db.default.driver="org.h2.Driver"
db.default.url="jdbc:h2:mem:test"
...
创建GuiceApplication时,我会执行以下操作:
Config config = ConfigFactory.load("application-test");
app = new GuiceApplicationBuilder().configure(config).build()
不能保证这是最优化的方法,但它可以正常工作。希望它能帮到你