我在Presenter中找到了一個調用數據庫的方法。現在,當我嘗試測試實際與數據庫通信的方法時,它給我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
我沒有看到你明白我的問題,可能是我的壞我沒有解釋簡短的方式..問題是我有一個主持人調用數據庫的方法,並在View上響應調用方法。當我開始測試演示者時,這個被嘲笑的UserDB不允許我做我想做的事情並給出NullPointerException。 – Jay