如何在具有本机依赖关系的robolectric中单元测试内容提供者和数据库调用

时间:2015-06-16 16:17:21

标签: android sqlite unit-testing robolectric android-testing

我想在我的项目中使用robolectric(3+)进行单元测试。问题是在我们的项目中我们没有使用android.database.sqlite中的sqlite依赖项,而是使用sqlite项目(org.sqlite.database)中编译的源代码。这是因为我们在数据库中使用基于硬件的加密来提高安全性。 org.sqlite.database的依赖项调用本机代码。 Robolectric不支持任何外部本机代码(将提供java.lang.UnsatisfiedLinkError)。我的项目中的ContentProvider和SQLite帮助器类引用org.sqlite.database包中的代码,用于创建表,构建查询,表连接。 现在,我可以为测试用例创建另一个内容提供程序,但它可能导致代码重复,并且它不会测试实际的内容提供程序。在内容提供程序中,我可以将数据库操作分成不同的类,但同样也是代码重复。好像我必须将它们作为检测测试用例运行。如果有人有一些建议,那就太好了。

1 个答案:

答案 0 :(得分:0)

我们将这些测试作为仪表测试运行。目前robolectric不支持任何外部本机代码,并在尝试访问任何本机方法时出现此错误。 因此,除了在设备上运行所有与DB相关的单元测试之外别无选择。