私は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)
チェックデータベースからのヌル値は 最初ようにヌルをチェックする(userDB.getValueFromSqlite( "役割"、1)!= NULL){ 場合( "教師" .equalsIgnoreCase(userDB.getValueFromSqlite(」ロール "、1))) view.userRole(" tutor "); else view.userRole( "student"); – param
[mcve]についてお読みください。単体テストのセットアップ部分全体を省略したときにテストコードが例外をスローする理由を説明することはできません。あなたは、私たちに不可欠な要素の一部のみを示しています。それを超えて:https://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it – GhostCat
私はあなたが私の問題を理解していない参照してください、私の悪い私を読むhaventは簡単な方法で説明しました..問題は、私はデータベースを呼び出すと、それはビュー上のメソッドを呼び出す応答にメソッドを持っている発表者です。私がプレゼンターをテストし始めたとき、このUserDBは私を嘲笑しています。私は何をしたいのですか?そしてNullPointerExceptionを返します。 – Jay