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 验证是否正常。
我正在尝试为我的应用程序数据库编写测试用例。这是我在设置方法中所做的:
@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 验证是否正常。