RenamingDelegatingContext没有创建测试数据库

时间:2016-03-02 21:21:17

标签: android unit-testing android-sqlite junit4

我正在尝试为我的应用数据库编写测试用例。这就是我在设置方法中所做的:

 @Before
    public void testCaseSetUp() {
        RenamingDelegatingContext context = new RenamingDelegatingContext(getTargetContext(), "test_");
        dbController = new DBController(context);
        dbController.open();
    }

DBController.java

public DBController(Context c) {
            context = c;
        }

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

RenamingDelegatingContext不会创建新的测试数据库,而是使用现有的db文件。这导致我的测试用例失败,因为我已有数据。

1 个答案:

答案 0 :(得分:3)

您确定在SQLiteOpenHelper课程内的某处重新创建了DBHelper吗?从它的外观来看,后者是一个单身,所以我可以假设你不是每次都重新创造它。您应该在@Before方法中执行此操作,因为此处使用RenamingDelegatingContext背后的想法是在打开新数据库之前删除旧数据库。

在测试后关闭SQLiteOpenHelper课程也是一种很好的做法。类似的东西:

@After
public void tearDown() {
    dbHelper.close();
}

如果这不起作用,请发布您的DBHelper课程以验证它是否正常。