【问题标题】:How to test methods that deal with SQLite database in android?如何在android中测试处理SQLite数据库的方法?
【发布时间】:2012-10-22 10:16:07
【问题描述】:

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

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

所以要调用任何方法,我需要调用SQLiteHelper 类中的open 方法,将结果捕获到SQLiteDatabse 对象中,然后创建DataSource 类的对象,最后调用方法(例如,包含作为原始查询结果的游标)。

我知道它不适用于简单的 JUnit 测试,并且我已经阅读了 Mock Objects,但我仍然不明白如何在我的情况下使用它。

【问题讨论】:

  • “另一个是 DataSource 类,它是一个 SQLiteDatabase 对象” - 这不清楚。 SQLiteHelper 应该创建 SQLiteDatabase 对象。您能否提供一些DataSource 类的代码来澄清问题。
  • 公共类数据源 { 私有静态 SQLiteHelper dbHelper = null; SQLiteDatabase 数据库;public void openDatabase(Context context) { if (dbHelper == null) { dbHelper = new SQLiteHelper(context); dbHelper.openDataBase(SQLiteDatabase.OPEN_READWRITE);数据库 = dbHelper.myDataBase; } }
  • 哦,我明白了。这门课没有什么重要的。无论如何检查我的答案
  • 如果您对答案满意,请将其标记为已接受。

标签: android junit easymock android-sqlite


【解决方案1】:

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

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

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

您可以从ProviderTestCase2 获得正确的IsolatedContext。 (您也可以查看ProviderTestCase2 来源以了解其工作原理。)

【讨论】:

  • AndroidTestCase 不是一个简单的“JUnit”测试,你不能在 JVM 上运行它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-24
相关资源
最近更新 更多