SuperAPI AI 工具集

choosing-test-rule-vs-runtest

测试与质量

查看项目

更新于 10-16 03:42

技能介绍

用途:为 Compose UI 测试选择正确的入口点,避免同时使用 JUnit4 TestRule 与 runComposeUiTest 造成的双重测试环境问题,并处理 v1 到 v2 的弃用迁移。

主要能力:区分 rule 与挂起 lambda 两条路径的适用场景;说明三种 rule 构造器(createComposeRule、createAndroidComposeRule<A>、createEmptyComposeRule)的返回类型与是否支持 setContent;说明三种 lambda 入口(runComposeUiTest、runAndroidComposeUiTest<A>、runEmptyComposeUiTest)的主机与参数;给出 v1 到 v2 的导入映射;列举 setContent 只能调用一次、Activity 自行 setContent 时不得再调用、禁止混用两个接口等规则。

使用方式:新代码优先使用 v2 导入(androidx.compose.ui.test.junit4.v2.、androidx.compose.ui.test.v2.);JUnit4 路径用于已有规则链(如 HiltAndroidRule)与仅 Android 场景;需要注入 TestDispatcher 或 Compose Multiplatform 时用 lambda 路径并传 effectContext;迁移后若依赖同步执行的 LaunchedEffect,可加 mainClock.advanceTimeBy(0) 排空队列。

适用场景:新写 Compose UI 测试选入口、IDE 出现弃用警告、v1 迁移后测试行为变化、自定义 Activity 与 createAndroidComposeRule/createEmptyComposeRule 的选择、Compose Multiplatform 测试。

限制:假设依赖与测试类已配置好;不涉及 host 与 device 选择、idle 与动画同步等相邻主题;默认 testTimeout 为 60 秒,超时抛 AndroidComposeUiTestTimeoutException;自定义 Activity 须在测试清单中声明。部分具体迁移细节与 v2 行为变化以官方迁移指南为准,此处资料未提供完整内容。