用途:帮助实现和审查 Kotlin 结构化并发代码,把取消、所有权与生命周期当作公开契约而非实现细节。
主要能力与规则:每个启动的协程都应有生命周期明确的拥有者,避免 GlobalScope;需要共同失败时优先用 coroutineScope,仅在契约要求隔离兄弟失败时用 supervisorScope;重新抛出 CancellationException,宽泛异常处理不得吞掉取消;阻塞调用应移到合适调度器或替换为可取消的异步 API;不要把冷 Flow 当作共享状态暴露,应按订阅与重放语义选择冷 Flow、StateFlow 或 SharedFlow;Channel 与队列要有界,并定义溢出、公平性、顺序与关闭行为;有意保留上下文,不通过全局或线程局部传递请求级可变状态;清理须在成功、失败、超时和取消时都执行,使用 finally 与可取消资源 API。
审查顺序:将协程创建点映射到作用域拥有者;从调用方追踪取消到子任务与适配器;识别阻塞调用与调度器假设;记录顺序、缓冲、重试、超时与监督契约;用虚拟时间或事件驱动同步编写确定性测试;对生命周期转换与重复取消做压力测试。
测试期望:断言发射值、顺序、终止错误、取消清理、取消后无工作以及资源关闭;避免固定 sleep 和只断言完成的测试。
命令:./gradlew --no-daemon test 与 ./gradlew --no-daemon check。
限制:资料未提供具体版本、依赖坐标、平台支持范围与更多示例,暂未提供。