You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fragment测试时Gradle构建无限运行或超时问题求助

解决Fragment测试导致Gradle构建无限循环/超时的问题

针对你遇到的单个Fragment测试触发Gradle构建死循环或超时、其他Instrumentation测试正常的情况,可按以下步骤排查:

1. 校验Fragment依赖版本一致性

fragment-testing依赖必须和项目中核心Fragment依赖(如fragment-ktx)版本完全匹配。如果你的app模块引入了androidx.fragment:fragment-ktx,检查其版本是否为1.5.5——版本不匹配会引发依赖冲突,导致构建过程陷入循环。

2. 排查目标Fragment的代码问题

launchFragmentInContainer启动Fragment后,若Fragment内部存在阻塞主线程的逻辑,会导致测试卡住,表现为Gradle构建超时。重点检查UserList的以下部分:

  • onCreateView、onViewCreated等生命周期方法中是否有同步网络请求、Thread.sleep()调用
  • ViewModel或Repository中是否有无限循环、未正确终止的异步任务
  • 是否有依赖未初始化导致的死锁

3. 调整Gradle构建与测试超时配置

加大Gradle堆内存与守护进程超时

在项目根目录的gradle.properties中添加/修改:

org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.daemon.idletimeout=120000

配置测试超时与禁用动画

在app模块的build.gradle中添加测试选项配置:

android {
    // ... 已有配置
    testOptions {
        execution 'ANDROIDX_TEST_ORCHESTRATOR'
        animationsDisabled = true // 禁用动画避免测试卡顿
        instrumentationTests {
            all {
                // 设置Instrumentation测试超时时间
                timeout.set(org.gradle.api.tasks.testing.logging.TestLogEvent.FAILED, 10, 'minutes')
            }
        }
    }
}

同时添加测试 orchestrator 依赖:

androidTestImplementation 'androidx.test:orchestrator:1.4.2'

4. 清理构建缓存

执行以下命令清理Gradle缓存,避免缓存损坏导致的异常:

./gradlew cleanBuildCache clean

之后重新尝试运行测试。

5. 检查测试环境状态

  • 若使用模拟器,重启模拟器并关闭开发者选项中的所有动画(窗口/过渡/程序时长缩放)
  • 换用真机运行测试,排除模拟器性能问题

内容的提问来源于stack exchange,提问作者Source

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 02:35:20