我有一个包装我的数据库的SQLiteOpenHelper。 SQLiteOpenHelper子类实现为Singleton以避免MultiTread问题,它似乎运行良好。
问题是:测试使用数据库的类。
在AndroidTestCase中,我想测试依赖于DB的方法,所以我使用
setContext(new RenamingDelegatingContext(getContext(), "test_"));
然后使用IsolatedContext获取db的单独空实例。
因此,Android应用程序需要单例,但Junit需要一个简单的实例。
我目前发现的唯一方法是使用两个构造函数声明SQLiteOpenHelper子类,一个返回单例实例的静态和另一个返回新实例的静态。然后添加到使用db的每个类添加一个构造函数以使用单例和另一个使用新实例的单元。 这种方法非常难看且容易出错,所以有一种更合乎逻辑的优雅方式吗?
(ps我没有使用ContentProvider而且对此不感兴趣,请不要将它们作为解决方案建议)