Android SQLiteOpenHelper同时支持多线程广告AndroidTestCase

时间:2014-12-21 15:16:43

标签: android multithreading junit sqliteopenhelper

我有一个包装我的数据库的SQLiteOpenHelper。 SQLiteOpenHelper子类实现为Singleton以避免MultiTread问题,它似乎运行良好。

问题是:测试使用数据库的类。

在AndroidTestCase中,我想测试依赖于DB的方法,所以我使用

setContext(new RenamingDelegatingContext(getContext(), "test_")); 然后使用IsolatedContext获取db的单独空实例。

因此,Android应用程序需要单例,但Junit需要一个简单的实例。

我目前发现的唯一方法是使用两个构造函数声明SQLiteOpenHelper子类,一个返回单例实例的静态和另一个返回新实例的静态。然后添加到使用db的每个类添加一个构造函数以使用单例和另一个使用新实例的单元。    这种方法非常难看且容易出错,所以有一种更合乎逻辑的优雅方式吗?

(ps我没有使用ContentProvider而且对此不感兴趣,请不要将它们作为解决方案建议)

0 个答案:

没有答案