0

这个问题的答案不是“Android 单元测试无法访问诸如 Room 数据库之类的 Android 堆栈模块,因为在您的桌面上它们都被删除了。”

我有一堆单元测试来测试碰巧在 Dao 类中的静态方法 - 调用它FooDao。他们都过去了一年,直到今天,当 Android Studio 编辑器调用它们时,它们停止了过去。当命令行测试调用它们时它们仍然通过,但编辑器报告:

java.lang.NoClassDefFoundError: androidx/sqlite/db/SupportSQLiteQuery

当单元测试到达FooDao.innocentStaticMethod(). 就像我说的,在FooDao不调用任何真实的 Room 方法的情况下访问该类,以前在单元测试中工作。

长期的解决方法是重构我的代码,以便FooDao只包含真正的 Room 调用。但是为什么 Android Studio 的 test runner 突然停止工作了呢?版本为 Android Studio 4.2 RC 1,构建于 2021 年 3 月 23 日。和targetSdkVersion 30.

4

1 回答 1

0

4 月 22 日,从androidx.room:room-runtime:2.2.6编译器切换到它。2.3.0

在 app/build.gradle 中:

implementation 'androidx.room:room-runtime:2.2.6'
annotationProcessor 'androidx.room:room-compiler:2.2.6'

因此,当我在下一次需要升级我的强大功能之前,我在这个问题上留下了创可贴FooDao,有人可以就此对 Android 中心进行 ping 操作吗?ktx

于 2021-04-30T19:39:20.297 回答