2016-06-17 4 views
0

私はこのは、[再生フレームワーク]はテスト中にデータベース接続はnullを返します

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

私はそれがnull例外ときにスローしかし、アプリケーション

以内にそれを実行したときにこれが正常に動作しますように見えるモデルを持っていますそれは、ユニットテストここ

によって呼び出されますスタックトレースです:

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

どのようにテストを実装しますか?あなたのテストクラスはWithApplication of Playから派生していますか? – asch

答えて

0

あなたはDBオブジェクトをStudentに注入すると思います。 もしそうなら、アプリケーション内では、PlayがDBオブジェクトを初期化して、それを学生に注入するので、正常に動作します。したがって、DBオブジェクトを使用することができます。

ユニットテストでは、someFunction()関数を直接呼び出して、DBオブジェクトがnull(NullPointExceptionを発生させる)になるようにします。

ユニットテストでは、someFunction()関数を呼び出す前にinit DBを実行する必要があります。

関連する問題