Android单元测试和数据库处理程序

时间:2016-04-26 03:09:37

标签: java android sqlite unit-testing

我对如何正确测试Android应用程序的数据库感到有点迷失。 我有我的数据库处理程序,它扩展了SQLiteOpenHelper。一些解决方案建议模拟这个类,但是如何让我成为我的数据库的单独实例?我也看到了使用in-memory SQLite database的建议,但这似乎是很多不必要的杂耍......

我应该如何测试我的数据库?任何帮助表示赞赏。

1 个答案:

答案 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对其进行实例化,并像往常一样在我的测试用例中使用它。