这个问题的答案不是“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
.