我正在尝试为我的应用程序数据库编写测试用例。这就是我在设置方法中所做的:
@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
类中的某个位置重新创建了 SQLiteOpenHelper
吗?从它的外观来看,后者是一个单例,所以我可以假设你不会每次都重新创建它。您应该在 @Before
方法中执行此操作,因为此处使用 RenamingDelegatingContext
背后的想法是,它会在打开新数据库之前删除旧数据库。
此外,在测试后关闭 SQLiteOpenHelper
类也是一个好习惯。像这样的东西:
@After
public void tearDown() {
dbHelper.close();
}
如果这不起作用,请发布您的 DBHelper
类来验证它是否正常。
关于android - RenamingDelegatingContext 未创建测试数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35758315/