2016-03-20 18 views
6

我使用Sugar ORM for db和Robolectric進行單元測試。要使用Robolectric的Sugar ORM,我遵循this的問題。Sugar ORM需要每次單元測試時都保存記錄嗎?

我在哪裏把我的代碼置於startEverTestSugarAppAsFirst方法並運行。

new PersonHandler(new Activity()).insertPeople(); 
Person p = Person.findById(Person.class, 1); 
System.out.println(p.getName()); 

它打印第一條記錄的名稱。到現在爲止還挺好。

但是,如果我註釋掉//new PersonHandler(new Activity()).insertPeople();並再次運行,則不會返回任何記錄並給出空指針異常。我認爲Sugar ORM在第一次運行時將記錄存儲在某處,並且我可以在第二次訪問這些記錄。另一方面,如果我運行模擬器,將代碼放在我的主要活動的onCreate方法中,並在第二次運行時註釋掉第一行,我可以看到打印在日誌中的第一條記錄。

new PersonHandler(this).insertPeople(); 
Person p = Person.findById(Person.class, 1); 
Log.v("person", p.getName()); 

那麼,單元測試結束後Sugar OrM刪除db?或者它保存的分貝,所以我可以一遍又一遍地使用它?

回答

1

它不是SugarORM而是Robolectric。它爲每個測試創建臨時數據庫,因此它們之間沒有隱藏的依賴關係。

這是好事,你的單元測試應該可以成功地在它們運行

+0

我可以使用SQLite數據庫與DB = SQLiteDatabase.openOrCreateDatabase(文件路徑,NULL)爲了運行不依賴;命令在robolectic單元測試。有沒有辦法將sugar orm與指定的db路徑連接起來? – orkan

+0

http://stackoverflow.com/questions/24225541/android-sugar-orm-with-existing-db-custom-file-path –

+0

我知道這個職位。但答案是將本地數據庫複製到模擬器可以訪問它的/ data/data/...文件夾。我需要使用本地數據庫進行單元測試。因爲,我已經在/ data/data/...位置有db。但是單元測試中的sugar orm代碼不會查看這個位置並使用它。 – orkan

相關問題