RenamingDelegatingContext 不创建测试数据库

RenamingDelegatingContext not creating a test database

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

 @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 不会创建新的测试数据库,而是使用现有的数据库文件。这导致我的测试用例失败,因为我已经有了数据。

您确定在 DBHelper class 中的某处重新创建了 SQLiteOpenHelper 吗?从它的外观来看,后者是一个单身人士,所以我可以假设你不会每次都重新创建它。您应该在 @Before 方法中这样做,因为这里使用 RenamingDelegatingContext 的想法是它会在打开新数据库之前删除旧数据库。

此外,在测试后关闭 SQLiteOpenHelper class 也是一个好习惯。类似于:

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

如果这不起作用,请 post 您的 DBHelper class 验证是否正常。