2012-10-22 91 views
2

我做了一個應用程序,通過打開,檢索數據並向其中插入數據來處理SQLite數據庫。現在我想測試我的方法。如何測試在Android中處理SQLite數據庫的方法?

所以,我有兩個班,一個「SQLiteHelper」延伸SQLiteOpenHelper打開,創建和升級數據庫,另一個是DataSource類,這使得一個SQLiteDatabase對象,包含了我所有的方法與交易數據庫。

所以調用我需要調用在SQLiteHelper類的開放式方法,趕,結果在SQLiteDatabse對象的任何方法,然後進行DataSource類的對象,最後調用方法(包含光標作爲例如rawquery的結果)。

我知道它不適用於簡單的JUnit測試,並且我已經閱讀了有關Mock Objects的內容,但我仍然不明白如何在我的情況下使用它。

+0

「另一個是DataSource類,它使SQLiteDatabase對象」 - 這是不清楚的。 'SQLiteHelper'應該創建'SQLiteDatabase'對象。你能否提供你的'DataSource'類的一些代碼來澄清這個問題。 –

+0

public class DataSource { \t private static SQLiteHelper dbHelper = null; \t SQLiteDatabase數據庫;公共無效的openDatabase(上下文上下文){ \t \t如果(dbHelper == NULL){ \t \t \t dbHelper =新SQLiteHelper(上下文); \t \t \t dbHelper.openDataBase(SQLiteDatabase.OPEN_READWRITE); \t \t \t database = dbHelper.myDataBase; \t \t} \t} – user1753461

+0

哦,我明白了。這個班沒什麼重要的。無論如何請檢查我的答案 –

回答

4

我知道,它不會用簡單的JUnit測試

它會奏效。只需像往常一樣調用你的方法,並檢查結果的正確性。

唯一重要的是,您應該更喜歡使用IsolatedContext來創建數據庫。在這種情況下,應用程序中的原始數據庫文件將保持不變。所有測試都可以使用單獨的測試數據庫文件,該文件可以根據需要多次修改甚至刪除。

您可以從ProviderTestCase2獲取正確IsolatedContext。 (你也可以看ProviderTestCase2來源瞭解它是如何工作的。)

+4

AndroidTestCase不是一個簡單的「JUnit」測試,你不能在JVM上運行它。 –

相關問題