为什么“connectedDebugAndroidTest”Gradle 任务无限期地挂在我的 Android 应用程序项目中?

Adi*_*ain 6 android-testing android-studio

我有几个长期存在的 Android 应用程序项目,在离开几个月后,我本周又回到了这些项目。

当我在这些项目中运行connectedAndroidTest(特别是:connectedDebugAndroidTest)Gradle 任务时,Gradle 任务会无限期挂起,并且 Android 设备上不会运行任何测试。下面的屏幕截图演示了这一点:

Android Studio 截图

到目前为止,我已经在以下环境中测试并观察到了这种行为:

Android Studio版本 macOS 版本
长颈鹿(2022.3.1 补丁 2) 文图拉13.6
电鳗(2022.1.1 补丁 2) 文图拉 13.1
海豚(2021.3.1 补丁 1) 文图拉 13.1

还有其他人遇到过这种情况吗?您是否找到了问题的根本原因?

笔记

  1. 尽管重新启动了 Android Studio 并重新启动了我的机器,这个问题仍然存在。
  2. 我在不同的 Android 项目和不同的 macOS 机器上都存在这个问题。

Adi*_*ain 2

我剥离了应用程序项目中的构建工具和库,并设法找到了问题的根本原因。

问题是以下依赖声明:

debugImplementation 'androidx.fragment:fragment-testing:1.5.5'
Run Code Online (Sandbox Code Playgroud)

在这里创建了一个最小的 Android 应用程序项目来演示该问题。运行connectedDebugAndroidTest此项目中的 Gradle 任务,您将观察到 Gradle 任务无限期挂起。从此项目中的build.gradleandroidx.fragment:fragment-testing文件中删除依赖项,然后重新运行Gradle 任务。这次您将观察到 Gradle 任务快速运行完成。connectedDebugAndroidTest

如果您的项目实际上需要androidx.fragment:fragment-testing库,则解决方法是将androidx.fragment:fragment-testing依赖项声明更改为以下内容:

debugImplementation 'androidx.fragment:fragment-testing-manifest:1.6.0'
androidTestImplementation 'androidx.fragment:fragment-testing:1.6.0'
Run Code Online (Sandbox Code Playgroud)

有关androidx.fragment:fragment-testing依赖项声明的详细讨论,请参阅IssueTracker中的Issue #128612536