如何在android中测试处理SQLite数据库的方法?

如何在android中测试处理SQLite数据库的方法?,android,junit,easymock,android-sqlite,Android,Junit,Easymock,Android Sqlite,我制作了一个应用程序,通过打开SQLite数据库、从中检索数据并向其中插入数据来处理该数据库。现在我想测试一下我的方法 因此,我有两个类,一个是“SQLiteHelper”,它扩展了SQLiteOpenHelper来打开、创建和升级数据库,另一个是DataSource类,它创建了一个SQLiteDatabase对象,并包含了我处理数据库的所有方法 因此,为了调用任何方法,我需要调用SQLiteHelper类中的open方法,在sqlitedatabase对象中捕获结果,然后创建DataSourc

我制作了一个应用程序,通过打开SQLite数据库、从中检索数据并向其中插入数据来处理该数据库。现在我想测试一下我的方法

因此,我有两个类,一个是“
SQLiteHelper
”,它扩展了
SQLiteOpenHelper
来打开、创建和升级数据库,另一个是
DataSource
类,它创建了一个
SQLiteDatabase
对象,并包含了我处理数据库的所有方法

因此,为了调用任何方法,我需要调用
SQLiteHelper
类中的open方法,在
sqlitedatabase
对象中捕获结果,然后创建
DataSource
类的对象,最后调用该方法(例如,它包含一个作为rawquery结果的游标)

我知道它不适用于简单的JUnit测试,我也读过关于模拟对象的书,但我仍然不明白如何在我的案例中使用它

我知道它不能用于简单的JUnit测试

会的。只需像往常一样调用您的方法并检查结果的正确性

唯一重要的是,您应该更喜欢在创建数据库时使用。在这种情况下,应用程序中的原始数据库文件将保持不变。所有测试都将使用单独的测试数据库文件,您可以根据需要多次修改甚至删除该文件

您可以从中获取适当的
IsolatedContext
。(您还可以查看
ProviderTestCase2
源代码以了解其工作原理。)

我知道它不能用于简单的JUnit测试

会的。只需像往常一样调用您的方法并检查结果的正确性

唯一重要的是,您应该更喜欢在创建数据库时使用。在这种情况下,应用程序中的原始数据库文件将保持不变。所有测试都将使用单独的测试数据库文件,您可以根据需要多次修改甚至删除该文件


您可以从中获取适当的
IsolatedContext
。(您还可以查看
ProviderTestCase2
源代码以了解其工作原理。)

“另一个是一个数据源类,用于生成SQLiteDatabase对象”-这一点尚不清楚
SQLiteHelper
应创建
SQLiteDatabase
对象。你能提供你的
DataSource
类的一些代码来澄清这个问题吗。公共类DataSource{private static SQLiteHelper dbHelper=null;SQLiteDatabase数据库;public void openDatabase(Context Context){if(dbHelper==null){dbHelper=new SQLiteHelper(Context);dbHelper.openDatabase(SQLiteDatabase.OPEN_READWRITE);database=dbHelper.myDataBase;}}}哦,我明白了。这个类不重要。请检查我的答案。如果您对答案满意,请将其标记为已接受。“另一个是数据源类,它生成SQLiteDatabase对象”-这不清楚。
SQLiteHelper
应创建
SQLiteDatabase
对象。能否提供
DataSource
类的一些代码来澄清问题。公共类DataSource{private static SQLiteHelper dbHelper=null;SQLiteDatabase数据库;public void openDatabase(上下文){if(dbHelper==null){dbHelper=new SQLiteHelper(context);dbHelper.openDataBase(SQLiteDatabase.OPEN_READWRITE);database=dbHelper.myDataBase;}}}哦,我明白了。这个类中没有什么重要的东西。请检查我的答案如果您对答案满意,请将其标记为已接受。AndroidTestCase不是一个简单的“JUnit”AndroidTestCase不是一个简单的“JUnit”测试,您不能在JVM上运行它。