2016-07-25 103 views
1

我想为我们的应用程序编写单元测试,我对测试我们的DAO层有点困惑。这层使用了很多真实的方法SQLiteDatabase,我们认为在这种情况下使用Mockito是不合适的。 所以,我们的问题是 - 如何用真实数据库测试DAO层?在Android中真正实现单元测试中的实际数据库实例吗?Android应用程序测试 - 如何使用真实数据库测试DAO层?

我们要测试什么:

  1. 执行SQL语句,例如database.execSQL(..)方法。
  2. 执行insert,update,delete,rawQuery方法SQLiteDatabase类。

在此先感谢!

回答

1

对不起,你不能写真正的数据库unittests。根据定义,这些不是单位测试。

然而,有时候提供假实施可能是有价值的,例如,在你的情况下一个InMemoryDatabase。 这有助于将代码从数据库中分离出来,因为您必须定义一个抽象接口和一些从realDB切换到fakeDB的方法。 如果您只使用少量的数据库方法,则可能值得您在单元测试中付出努力并超出模拟解决方案。

然而,从长远来看,更好的方法是改善您的设计。请阅读“依赖倒置原则”和“洋葱架构”。

+0

这是另一种“圣战”问题。我同意你的观点,不要用真正的数据库编写单元测试。然而在网络上有很多与此有争议的文章。对于OP,我建议编写综合测试。 –

+0

@Evgeniy K.,感谢有关集成测试的短语。我想,我们会写出来。 –

相关问题