【问题标题】:Unit test configuration broke in Android Studio 3.1Android Studio 3.1 中的单元测试配置中断
【发布时间】:2018-09-08 07:46:52
【问题描述】:

我更新到 Android Studio 3.1 并且也按照 Android Studio 的建议:

  • 将Android gradle插件从2.3.0更新到3.1.0(也试过新的3.1.1,问题依旧)
  • 将 buildToolsVersion 更新为 27.0.3
  • 使用 SDK 管理器下载了 Android 8.1 API 27。

我使用的是 JDK 8。

我之前在一个模块中运行所有测试的 Android Studio 构建配置“核心测试”现在说:

无法使用 Gradle 分发版“https://services.gradle.org/distributions/gradle-4.5.1-all.zip”执行构建。

我的设置:

ide 中显示的确切异常:

我的完整源代码: https://github.com/Leejjon/BluffPoker

在命令行上运行时显然会出现相同的 Nullpointer:gradle :core:test 此命令将失败并显示相同的 NullPointer。对像gradle test 这样的根项目进行测试将运行良好。我还可以在我的 Android 手机上部署该应用程序。这可能与 IntelliJ 无关,但 Android gradle 插件 3.1.0 破坏了运行 gradle :core:test 命令的能力。

TLDR:自 Android gradle 插件 3.1.0 以来,在核心模块中运行任何 gradle 任务(如 gradle :core:sometask)似乎会导致空指针。

我现在的解决方法是使用gradle test 命令在所有模块中运行所有测试并研究由junit 生成的html 页面(在BluffPoker\core\build\reports\tests\test\index.html 中找到)来排查他们是否失败。

【问题讨论】:

  • 尝试在 gradle.properties 中降级 Gradle 版本? developer.android.com/studio/releases/…
  • 在这次升级之前我已经在使用这个 gradle 版本,它运行良好。我更愿意找到一个可以让 Android Studio 使用它的解决方案。
  • 好吧,您的错误显然是在抱怨 Gradle 版本。而且文档说 Gradle 插件 3.1 支持 4.4+,所以试试吧
  • distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
  • 尝试editing您的 gradle.properties,然后重新启用按需配置。

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


【解决方案1】:

在你的 gradle-wrapper.properties 中,尝试使用:

distributionUrl=https://services.gradle.org/distributions/gradle-4.3-rc-2-all.zip

【讨论】:

  • 当实际的更高版本存在时,为什么要使用 RC 构建?
  • 我得到:支持的最低 Gradle 版本是 4.4。当前版本是 4.3-rc-2。请修复项目的 Gradle 设置。修复 Gradle 包装器并重新导入项目 Gradle 设置
  • @Leejjon 点击​​它然后修复。
  • @Whitebear 单击它将再次将 gradle 包装器属性更改为 4.4,这将导致与我使用 4.5.1 时相同的错误(正如我在第一篇文章中添加的那样:i.imgur.com/oa4VH5F.png)。
【解决方案2】:

来自 libgdx 论坛的 kekkou 的解决方案: http://www.badlogicgames.com/forum/viewtopic.php?f=11&t=27639&p=109249#p109249

他的解决方案是:将root build.gradle中的project(':android') {}块移动到android\build.gradle中。

这会使所有命令再次工作。我没有发现任何缺点。

我的项目上的此修复提交: https://github.com/Leejjon/BluffPoker/commit/d10deb090c2d80e641d733efdaa85f99c0a9fe2f

【讨论】:

    【解决方案3】:

    正如这个错误评论者指出的那样: https://issuetracker.google.com/issues/77605097#comment7

    禁用 Gradle 的“按需配置”功能(在设置:构建、执行和部署:编译器中)是一种可行的解决方法。

    自从我这样做后,我的单元测试都重新开始工作了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多