2017-06-07 2 views
0

私はPresenterでデータベースを呼び出すメソッドを取得しました。さて、実際にデータベースと通信するメソッドをテストしようとすると、それは私にNullPointerExceptionを与えます。データベーステスト中のNullPointerException

どのように実際にそのようなケースを処理しますか?

public void getRoleFromSQLite(){ 
    if ("tutor".equalsIgnoreCase(userDB.getValueFromSqlite("role",1))) 
     view.userRole("tutor"); 
    else 
     view.userRole("student"); 
} 

TEST:

@Test 
public void getRoleFromSqliteDatabaseTest(){ 
    Mockito.doReturn("tutor").when(userDB).getValueFromSqlite("role",1) 
    presenter.getRoleFromSQLite(); 
    Mockito.verify(viewMock).userRole("tutor"); 
} 

例外:

java.lang.NullPointerException 
    at com.dolevel.level.db.UserDB.getValueFromSqlite(UserDB.java:130) 
    at com.dolevel.level.presenters.UserProfileScreenPresenter.getRoleFromSQLite(UserProfileScreenPresenter.java:28) 
    at com.dolevel.level.UserProfileScreenPresenterTest.getRoleFromSqliteDatabaseTest(UserProfileScreenPresenterTest.java:53) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
+0

チェックデータベースからのヌル値は 最初ようにヌルをチェックする(userDB.getValueFromSqlite( "役割"、1)!= NULL){ 場合( "教師" .equalsIgnoreCase(userDB.getValueFromSqlite(」ロール "、1))) view.userRole(" tutor "); else view.userRole( "student"); – param

+0

[mcve]についてお読みください。単体テストのセットアップ部分全体を省略したときにテストコードが例外をスローする理由を説明することはできません。あなたは、私たちに不可欠な要素の一部のみを示しています。それを超えて:https://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it – GhostCat

+0

私はあなたが私の問題を理解していない参照してください、私の悪い私を読むhaventは簡単な方法で説明しました..問題は、私はデータベースを呼び出すと、それはビュー上のメソッドを呼び出す応答にメソッドを持っている発表者です。私がプレゼンターをテストし始めたとき、このUserDBは私を嘲笑しています。私は何をしたいのですか?そしてNullPointerExceptionを返します。 – Jay

答えて

1

あなただけのあなたのdoReturn文を変更する必要があります。

Mockito.doReturn("tutor").when(userDB).getValueFromSqlite("role",1) 

あなたが嘲笑されるだろう3210

Mockito.doReturn("tutor").when(userDB.getValueFromSqlite("role",1)) 

こうか記録呼び出し方法の代わりに、嘲笑の挙動を指定して、それを直接呼び出すgetValueFromSqliteします。

+0

音が正しい;-) – GhostCat

+0

なぜ両方が違うのか分かりませんか? – Jay

+0

基本的に最初のものではオブジェクトを渡し、2番目のものでは_method call_を渡します。 'when'メソッドはどの特定メソッドがあなたを嘲笑しているかを知る必要があります。これは基本的にあなたがmockitoを使う必要がある方法です。 – alayor

関連する問題