用途:在 Compose 测试中选择正确的等待/空闲同步方式,解决“节点偶尔找不到”等偶发失败;属于 Android 测试技能集。
主要能力:枚举 ComposeTestRule 与 ComposeUiTest 上的等待 API,包括 waitForIdle、awaitIdle、waitUntil、waitUntilNodeCount、waitUntilExactlyOneExists、waitUntilAtLeastOneExists、waitUntilDoesNotExist、runOnIdle、runOnUiThread、runWhenIdle、awaitAndRunWhenIdle、hasPendingWork 及 IdlingResource 注册。说明 idle 需同时满足:无待处理重组、无待处理绘制、所有已注册 IdlingResource 报告空闲。区分超时来源:waitForIdle/awaitIdle 用 Espresso 主策略(默认约 26 秒),waitUntil 系列用挂钟且每次默认 1000 毫秒,advanceTimeUntil 用测试时钟。
使用方式:等待节点出现/消失/数量稳定用 waitUntilExactlyOneExists 等实验 API(需 @OptIn(ExperimentalTestApi::class));等待 Compose 状态用 mainClock.advanceTimeUntil;等待非 Compose 条件(如 Job.isCompleted)用 waitUntil;读取或修改状态经 runOnIdle 或 runOnUiThread;仅断言且需大量节点读取时用 runWhenIdle,但不得在其中改状态;外部异步(HTTP、数据库)用 registerIdlingResource。
限制:动画相关等待、测试时钟机制、测试标签/查找器问题、Espresso 互操作不在本技能范围。autoAdvance 为 true 时 hasPendingWork 结果不可靠;runWhenIdle 内不得修改状态;暂停时钟下修改状态须用 runOnUiThread。isIdleNow 必须轻量,它在主线程被调用。具体安装命令、平台与收费信息资料未提供。