首页 > 解决方案 > 房间没有在 UI 测试中创建数据库

问题描述

我在我的项目中使用了一个 Room 数据库,它在生产环境中工作,包括 UI 测试(使用 Espresso)直到 Android 8。在 Android 9 上,我的 UI 测试目前失败,因为没有创建数据库。我在 logcat 中收到以下错误消息

android.database.sqlite.SQLiteException: no such table: table (code 1 SQLITE_ERROR): , while compiling: SELECT * FROM table WHERE type = ?

这只发生在 Android 9 设备上。在使用 Stetho 进行调试时,我也找不到 db 文件。在 Android 9 之前的设备上,该文件在 Stetho 中可见。有没有人面临同样的问题?目前我们使用的是用于 Room 的预 AndroidX 库:

implementation "android.arch.persistence.room:runtime:${androidArchVersion}"
kapt "android.arch.persistence.room:compiler:${androidArchVersion}"

或者是否有必要使用适用于 Android 9 设备的 AndroidX 库?

任何帮助表示赞赏!

标签: androidandroid-espressoandroid-roomandroid-9.0-pie

解决方案


事实证明,迁移后数据库缺少 close()。在生产应用程序中,一切都很好,但在模拟器上的测试 + 中出现了所描述的错误。也许它对其他人有帮助!


推荐阅读