【发布时间】:2012-10-20 18:35:12
【问题描述】:
我正在为我的 Android 应用程序编写 JUnit 测试。我已经阅读了 Android 开发人员资源(测试基础知识、Spinner 示例测试等)。现在我想独立于使用它的活动来测试我的 SQLiteOpenHelper 子类。我的想法是扩展ActivityInstrumentationTestCase2<Activity>。可以简单地使用Activity 作为通用参数还是我需要一个子类?另外,我的方向是否正确,还是有更好的方法来测试我的 SQLiteOpenHelper 子类?
【问题讨论】:
-
普通的
AndroidTestCase就足够了。出于测试目的,使用模拟由数据库助手创建的SQLiteDatabase的ContextWrapper可能很有用(可以通过覆盖Context#openOrCreateDatabase(String, int, CursorFactory)来完成) -
@Jens 感谢您的提示。我去看看。
-
@Jens 您能否提供更多详细信息作为答案?特别是,我不清楚覆盖
Context#openOrCreateDatabase()。你的意思是创建一个模拟Context子类,我将其传递给ContextWrapper? -
创建一个 ContextWrapper 的子类并覆盖 openOrCreateDatabase 应该适合你。
-
子类化
Context意味着您必须通过SQLiteOpenHelper追踪Context中使用的所有方法 - 然后调用测试用例返回的包装Context-或为每一个返回合适的模拟值 - 即繁琐且毫无意义的忙碌工作。
标签: java android testing junit instrumentation