2016-07-25 96 views
1

我想爲我們的應用程序編寫單元測試,我對測試我們的DAO層有點困惑。這層使用了很多真實的方法SQLiteDatabase,我們認爲在這種情況下使用Mockito是不合適的。 所以,我們的問題是 - 如何用真實數據庫測試DAO層?在Android中真正實現單元測試中的實際數據庫實例嗎?Android應用程序測試 - 如何使用真實數據庫測試DAO層?

我們要測試什麼:

  1. 執行SQL語句,例如database.execSQL(..)方法。
  2. 執行insert,update,delete,rawQuery方法SQLiteDatabase類。

在此先感謝!

回答

1

對不起,你不能寫真正的數據庫unittests。根據定義,這些不是單位測試。

然而,有時候提供假實施可能是有價值的,例如,在你的情況下一個InMemoryDatabase。 這有助於將代碼從數據庫中分離出來,因爲您必須定義一個抽象接口和一些從realDB切換到fakeDB的方法。 如果您只使用少量的數據庫方法,則可能值得您在單元測試中付出努力並超出模擬解決方案。

然而,從長遠來看,更好的方法是改善您的設計。請閱讀「依賴倒置原則」和「洋蔥架構」。

+0

這是另一種「聖戰」問題。我同意你的觀點,不要用真正的數據庫編寫單元測試。然而在網絡上有很多與此有爭議的文章。對於OP,我建議編寫綜合測試。 –

+0

@Evgeniy K.,感謝有關集成測試的短語。我想,我們會寫出來。 –

相關問題