我的应用程序在后端有一个数据库,我在测试这个东西时遇到了很多麻烦。 (这是一个Android应用程序,但我认为测试概念是相似的。在我的测试应用程序,我有一个数据库适配器:使用模拟数据库连接测试的机制
public class MyDatabaseAdapter() {
Cursor returnCursorFromQuery(SQLQuery query) {
// execute an SQL query and wrap the result in a Cursor object
}
}
我有一个方法,我试图测试,它给当我的数据库中选择查询正确的输出不返回行:
MyDatabaseAdapter adapter;
public int methodUnderTest() {
this.adapter = new MyDatabaseAdapter();
return populate();
}
private int populate() {
SQLQuery query = new SQLQuery("SELECT * FROM my_table");
Cursor aCursor = this.adapter.returnCursorFromQuery(query);
// populate the UI
return aCursor.getCount();
}
我有一个返回在我的测试框架对所有查询零行的模拟指针对象,我不明白的是我如何得到我的私人populate()
方法来针对模拟游标对象而不是连接到我的实际数据库的游标运行其查询,或者如果我编写模拟数据库适配器对象,如何让methodUnderTest()
使用模拟适配器,而不是使用其编程使用的模拟适配器?
任何方向都会很有帮助。谢谢。