我对如何正确测试Android应用程序的数据库感到有点迷失。 我有我的数据库处理程序,它扩展了SQLiteOpenHelper。一些解决方案建议模拟这个类,但是如何让我成为我的数据库的单独实例?我也看到了使用in-memory SQLite database的建议,但这似乎是很多不必要的杂耍......
我应该如何测试我的数据库?任何帮助表示赞赏。
答案 0 :(得分:1)
这就是我对数据库库的处理方式:
public class TestDatabaseManager extends AndroidTestCase {
HrSuiteDatabaseManager dbm;
public void setUp() throws Exception {
super.setUp();
RenamingDelegatingContext rdcontext = new RenamingDelegatingContext(getContext(), "test_");
dbm = new HrSuiteDatabaseManager(rdcontext);
dbm.registerTableAccess(new EmployeeAccess());
}
public void testInsertion() {
EmployeeAccess ea = dbm.getEmployeeAccess();
ea.insert(createEmployee(0));
List<Employee> emps = ea.getAll();
assertEquals(1, emps.size());
assertEmployee(emps.get(0), 0);
}
}
这里的关键是类RenamingDelegatingcontext
,它将创建具有指定前缀的数据库文件。
我HrSuiteDatabaseManager
来自SQLiteOpenHelper
。我使用RenamingDelegatingcontext
对其进行实例化,并像往常一样在我的测试用例中使用它。