我正在尝试为我们的应用编写单元测试,而且我对测试DAO层有点困惑。这个图层使用了很多真实的SQLiteDatabase
方法,我们不认为在这种情况下使用Mockito
是一种正确的方法。
所以,我们的问题是 - 如何用真实数据库测试DAO层?在Android中获取单元测试中的真实数据库实例是真的吗?
我们想要测试的内容:
database.execSQL(..)
方法。insert
类的update
,delete
,rawQuery
,SQLiteDatabase
方法。提前致谢!
答案 0 :(得分:1)
抱歉,您无法使用真实数据库编写单元测试。根据定义,这些都不是单元测试。
但是,有时提供Fake实现可能很有价值,例如在您的情况下是InMemoryDatabase。 这有助于将代码与DB分离一点,因为您必须定义一个抽象接口以及从realDB切换到fakeDB的一些方法。 如果您只使用少量数据库方法,那么在您的单元测试中,Mock解决方案的努力和重量可能是值得的。
但是,从长远来看,更好的方法是改进您的设计。请阅读"依赖倒置原则"和#34;洋葱建筑"。