2
我想为我的应用程序数据库编写测试用例。这是我的设置方法做:RenamingDelegatingContext不创建测试数据库
@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不创建一个新的测试数据库,而不是使用现有的数据库文件。这导致我的测试用例失败,因为我已经有了数据。
这是一个很好的结果。我为我的助手类使用了单例模式。葛丽塔谢谢你。 –
有没有一种方法可以创建一个单独的测试数据库来进行测试,然后在拆解时将其销毁。这样我就不会触碰生产数据库? –
正确使用'RenamingDelegatingContext'是要走的路。当你在'SQLiteOpenHelper'中使用这个上下文时,它会创建一个与你的真实无关的测试数据库!如果答案对你有帮助,也许你可以赞扬它 - 这样其他人就会知道这就是解决方案。 – Vesko