Unit testing 播放2框架单元测试-java.lang.RuntimeException:数据源用户为空?

Unit testing 播放2框架单元测试-java.lang.RuntimeException:数据源用户为空?,unit-testing,playframework,playframework-2.0,h2,ebean,Unit Testing,Playframework,Playframework 2.0,H2,Ebean,我试图在Play2应用程序中以MySQL兼容模式使用H2数据库运行单元测试。我在之前的@中对其进行了如下配置: @之前 public void startApp()引发异常{ 映射设置=新建HashMap(); settings.put(“db.default.driver”、“org.h2.driver”); settings.put(“db.default.user”、“sa”); settings.put(“db.default.password”和“”); settings.put(“d

我试图在Play2应用程序中以MySQL兼容模式使用H2数据库运行单元测试。我在之前的
@中对其进行了如下配置:

@之前
public void startApp()引发异常{
映射设置=新建HashMap();
settings.put(“db.default.driver”、“org.h2.driver”);
settings.put(“db.default.user”、“sa”);
settings.put(“db.default.password”和“”);
settings.put(“db.default.url”,“jdbc:h2:mem:play-test-351881363;MODE=MySQL”);//TODO:对url使用配置
settings.put(“db.default.jndiName”、“DefaultDS”);
app=Helpers.fakeApplication(设置);
Helpers.start(应用程序);
databaseTester=新的JndiDatabaseTester(“DefaultDS”);
IDataSet expectedDataSet=新建FlatXmlDataSetBuilder().build(play.play.application())
.resourceAsStream(“/resources/dataset.xml”);
databaseTester.setDataSet(expectedDataSet);
databaseTester.onSetup();
}
@之后
public void stopApp()引发异常{
databaseTester.onTearDown();
Helpers.stop(应用程序);
}
但在实际的测试方法中,当它试图访问数据库时,会导致
java.lang.RuntimeException:DataSource用户为null?

[ERROR] [02/12/2013 01:19:32.085] [application-akka.actor.default-dispatcher-4] [akka://application/user/load_data_task_runner_test/load_record] DataSource user is null?
java.lang.RuntimeException: DataSource user is null?
    at com.avaje.ebeaninternal.server.lib.sql.DataSourcePool.<init>(DataSourcePool.java:184)
    at com.avaje.ebeaninternal.server.lib.sql.DataSourceManager.getDataSource(DataSourceManager.java:200)
    at com.avaje.ebeaninternal.server.lib.sql.DataSourceGlobalManager.getDataSource(DataSourceGlobalManager.java:46)
    at com.avaje.ebeaninternal.server.core.DefaultServerFactory.getDataSourceFromConfig(DefaultServerFactory.java:432)
    at com.avaje.ebeaninternal.server.core.DefaultServerFactory.setDataSource(DefaultServerFactory.java:393)
    at com.avaje.ebeaninternal.server.core.DefaultServerFactory.createServer(DefaultServerFactory.java:169)
    at com.avaje.ebeaninternal.server.core.DefaultServerFactory.createServer(DefaultServerFactory.java:124)
    at com.avaje.ebeaninternal.server.core.DefaultServerFactory.createServer(DefaultServerFactory.java:64)
    at com.avaje.ebean.EbeanServerFactory.create(EbeanServerFactory.java:45)
    at com.avaje.ebean.Ebean$ServerManager.getWithCreate(Ebean.java:206)
    at com.avaje.ebean.Ebean$ServerManager.get(Ebean.java:193)
    at com.avaje.ebean.Ebean$ServerManager.access$200(Ebean.java:128)
    at com.avaje.ebean.Ebean.getServer(Ebean.java:257)
    at play.db.ebean.Model$Finder.server(Model.java:240)
    at play.db.ebean.Model$Finder.byId(Model.java:261)
    at integration.LoadRecordService.onReceive(LoadRecordService.java:50)
    at akka.actor.UntypedActor$$anonfun$receive$1.applyOrElse(UntypedActor.scala:159)
    at akka.actor.ActorCell.receiveMessage(ActorCell.scala:425)
    at akka.actor.ActorCell.invoke(ActorCell.scala:386)
    at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:230)
    at akka.dispatch.Mailbox.run(Mailbox.scala:212)
    at akka.dispatch.ForkJoinExecutorConfigurator$MailboxExecutionTask.exec(AbstractDispatcher.scala:502)
    at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:262)
    at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:975)
    at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1478)
    at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:104)

我在我的
@之前
@之后
中也做了同样的操作,可能除了一些可能会导致错误的线程之外。

问题是由
ebean引起的。默认的
配置中的键在主配置中被注释掉了:

ebean.default="models.*"
不需要为H2设置用户和密码,它可以在没有设置的情况下工作:

settings.put("db.default.user", "sa");
settings.put("db.default.password", "");