我正在尝试为我的应用数据库编写测试用例。这就是我在设置方法中所做的:
@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文件。这导致我的测试用例失败,因为我已有数据。
答案 0 :(得分:3)
您确定在SQLiteOpenHelper
课程内的某处重新创建了DBHelper
吗?从它的外观来看,后者是一个单身,所以我可以假设你不是每次都重新创造它。您应该在@Before
方法中执行此操作,因为此处使用RenamingDelegatingContext
背后的想法是在打开新数据库之前删除旧数据库。
在测试后关闭SQLiteOpenHelper
课程也是一种很好的做法。类似的东西:
@After
public void tearDown() {
dbHelper.close();
}
如果这不起作用,请发布您的DBHelper
课程以验证它是否正常。