2015-11-18 59 views
1

我目前正試圖在android中測試一個greenDao實體,我無法弄清楚如何正確獲取dao對象的副本。測試GreenDao實體,QueryBuilder始終爲空

我目前正在:

@Before 
public void setUp() throws Exception { 

    user = new User(id, userId, email, password, token); 

    Context context = new MockContext(); 
    DaoMaster.DevOpenHelper openHelper = new DaoMaster.DevOpenHelper(context , null, null); 
    SQLiteDatabase db = openHelper.getWritableDatabase(); 
    daoSession = new DaoMaster(db).newSession(); 
    userDb = daoSession.getUserDao(); 

    assertNotNull(userDb); // This PASSES 

    userDb.queryBuilder().list(); // This ALWAYS throws null pointer exception 
} 

有什麼建議?我的測試類擴展AndroidTestCase

UPDATE:

我已經制定了如何使用設備上運行測試時訪問實體如下:

public class UserDaoHelperTest extends ApplicationTestCase<Application> { 

    private UserDao userDb; 

    public UserDaoHelperTest() { 
     super(Application.class); 
    } 

    @Override 
    public void setUp(){ 

     DaoMaster.DevOpenHelper openHelper = new DaoMaster.DevOpenHelper(getContext(), null, null); 
     SQLiteDatabase db = openHelper.getWritableDatabase(); 
     DaoSession daoSession = new DaoMaster(db).newSession(); 
     userDb = daoSession.getUserDao(); 
    } 
} 
+0

daoSession.getUserDao()必須爲null嘗試檢查一下。 –

+0

'assertNotNull(userDb);'通過沒有問題,所以它不能是 –

+0

@Joe Maher:這是一個Android測試(在設備或模擬器上運行)還是JUnit測試在PC上運行? –

回答

0

我已經制定了如何訪問實體在設備上運行測試時使用以下內容:

public class UserDaoHelperTest extends ApplicationTestCase<Application> { 

    private UserDao userDb; 

    public UserDaoHelperTest() { 
     super(Application.class); 
    } 

    @Override 
    public void setUp(){ 

     DaoMaster.DevOpenHelper openHelper = new DaoMaster.DevOpenHelper(getContext(), null, null); 
     SQLiteDatabase db = openHelper.getWritableDatabase(); 
     DaoSession daoSession = new DaoMaster(db).newSession(); 
     userDb = daoSession.getUserDao(); 
    } 
}