1

我的 Android 项目有大约 70 个 Robolectric 测试,它们都通过了 2 个月。不知何故,从今天开始,测试失败并出现奇怪的错误消息:

  • java.lang.IllegalStateException:您需要在此活动中使用 Theme.AppCompat 主题(或后代)。
  • java.lang.NoClassDefFoundError: org/apache/http/client/HttpClient
  • 也无法加载资源文件

我没有更改我的代码,所以它不能是与代码相关的问题。我清理了项目和 gradle,但没有帮助。几天前我确实做了一个由 Android Studio 推广的更新,不确定是否相关。

还有其他人遇到这个问题吗?我该如何摆脱这种糟糕的状态?

- 编辑 -

Robolectric 版本很重要!基于评论中的建议的有趣观察,robolectric 版本与故障率:

  • 3.3.1,约 40% 的测试失败。
  • 3.2.2,~40% 失败(与 3.3.1 相同)
  • 3.1.4,~15% 失败
  • 3.1.2,~0% 失败(有警告,见下文)
  • 3.1, 100% 失败 (!)

另一个观察结果是不一致。如果我跑了整套,都通过了!但是,如果我只运行一个测试文件,则所有失败并显示以下消息:

没有这样的清单文件:build/intermediates/bundles/debug/AndroidManifest.xml

4

1 回答 1

1

AS 对依赖关系的变化非常敏感,并且默认情况下 AS 不会为测试设置工作目录。

No such manifest ...错误直接说Robolectric找不到你的清单。

每当您在 AS 中测试失败时,首先检查命令行是否可重现。

检查第一个工作目录进行测试: 工作目录设置的屏幕截图

我还建议默认将模块目录设置为工作目录: 默认工作目录的屏幕截图

于 2017-03-14T05:11:25.903 回答