运行Robolectric测试的各种错误:Theme.AppCompat,NoClassDefFoundError等等

时间:2017-03-12 05:12:42

标签: android android-studio robolectric robolectric-gradle-plugin

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

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

我没有更改我的代码,因此无法解决与代码相关的问题。我清理了项目和gradle,但它没有帮助。几天前我确实做过Android Studio推广的更新,不确定是否相关。

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

- 编辑 -

Robolectric版本很重要!有趣的观察基于评论中的建议,robolectric版本vs.s.失败率:

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

另一个观察结果是它不一致。如果我运行整套,全部通过!但如果我只运行一个测试文件,则所有信息都会失败:

  

没有这样的清单文件:   建立/中间体/捆绑/调试/ AndroidManifest.xml中

1 个答案:

答案 0 :(得分:1)

AS对依赖项更改非常敏感,并且AS默认情况下不会为测试设置工作目录。

No such manifest ...错误直接说 Robolectric 无法找到您的清单。

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

检查第一个工作目录以进行测试: screenshot for working directory settings

我还建议默认将模块目录设置为工作目录: screenshot for default working directory