簡體   English   中英

在JUnit4和Mockito中編寫SQLiteOpenHelper測試用例

[英]Writing SQLiteOpenHelper test cases in JUnit4 and Mockito

我正在嘗試為我的數據庫編寫測試用例。

我有一個擴展到SQLiteOpenHelper的輔助類

DBHelper.java
       public DBHelper(Context context) {
            super(context, DBConstants.DATABASE_NAME, null, DBConstants.DATABASE_VERSION);
        }

和一個包含所有插入刪除等的構造函數類

DBController.java
      public DBController open() throws SQLException {
            dbHelper = DBHelper.getInstance(context);
            database = dbHelper.getWritableDatabase();
            return this;
        }

我的考試班

DBControllerTest.java
@Mock
    Context mContext;
    DBController dbController;

    @Before
    public void setUp() throws Exception {
        MockitoAnnotations.initMocks(this);
        RenamingDelegatingContext context = new RenamingDelegatingContext(mContext, "test_");
        dbController = new DBController(context);
        dbController.open();
    }

這時當我執行dbController.open()時,dbHelper.getWritableDatabase()始終返回null。

我該如何解決這個問題。 我也是以正確的方式嘲笑它。 我搜索了很多但沒有找到解決方案。 測試數據庫查詢的最佳方法是什么?

你不能像這樣模擬Context ,你需要使用instrumentation的Context 由於此測試需要Android代碼並因此需要檢測,因此請確保將其放入androidTest目錄中的測試中。

請參閱答案以獲取示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM