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