Android应用测试 - 如何使用真实数据库测试DAO层?

时间:2016-07-25 11:17:36

标签: android sqlite unit-testing testing

我正在尝试为我们的应用编写单元测试,而且我对测试DAO层有点困惑。这个图层使用了很多真实的SQLiteDatabase方法,我们不认为在这种情况下使用Mockito是一种正确的方法。 所以,我们的问题是 - 如何用真实数据库测试DAO层?在Android中获取单元测试中的真实数据库实例是真的吗?

我们想要测试的内容:

  1. 执行SQL语句,例如database.execSQL(..)方法。
  2. 执行insert类的updatedeleterawQuerySQLiteDatabase方法。
  3. 提前致谢!

1 个答案:

答案 0 :(得分:1)

抱歉,您无法使用真实数据库编写单元测试。根据定义,这些都不是单元测试。

但是,有时提供Fake实现可能很有价值,例如在您的情况下是InMemoryDatabase。 这有助于将代码与DB分离一点,因为您必须定义一个抽象接口以及从realDB切换到fakeDB的一些方法。 如果您只使用少量数据库方法,那么在您的单元测试中,Mock解决方案的努力和重量可能是值得的。

但是,从长远来看,更好的方法是改进您的设计。请阅读"依赖倒置原则"和#34;洋葱建筑"。