[Play框架]测试中的DataBase连接返回null

时间:2016-06-17 16:43:00

标签: java database playframework

我有一个看起来像这样的模型

public class Student extends User {
    public void someFunction(){
          Connection conn=DB.getConnection();
              .......
      }
  }

当我在应用程序中运行它时,这很好用。

然而,当它被单元测试

调用时,它会抛出一个空异常

这是堆栈跟踪:

java.lang.NullPointerException
at play.api.Application$$anonfun$instanceCache$1.apply(Application.scala:215)
at play.api.Application$$anonfun$instanceCache$1.apply(Application.scala:215)
at play.utils.InlineCache.fresh(InlineCache.scala:69)
at play.utils.InlineCache.apply(InlineCache.scala:55)
at play.api.db.DB$.db(DB.scala:24)
at play.api.db.DB$.getConnection(DB.scala:35)
at play.api.db.DB.getConnection(DB.scala)
at play.db.DB.getConnection(DB.java:79)
at play.db.DB.getConnection(DB.java:67)
at play.db.DB.getConnection(DB.java:46)

1 个答案:

答案 0 :(得分:0)

我猜你把DB对象注入Student。 如果是这样,在应用程序中它工作正常,因为Play init一个DB对象然后将其注入Student。所以你可以使用DB对象。

在单元测试中,直接调用someFunction()函数,因此DB对象为null(导致NullPointException)。

我认为在单元测试中,你应该在调用someFunction()函数之前初始化DB。