渐进式编程课
KMP 目录
第 64 课2026.09.30

在测试中把任务完成时刻变成可回归的断言。

第 64 课:断言虚拟时间完成点

  • 日期:2026-09-30
  • 课程序号:第 64 课
  • 知识点:currentTime 与 assertEquals

用途或适用场景

在测试中把任务完成时刻变成可回归的断言。

核心概念

currentTime 读取测试调度器的虚拟毫秒数;在 runCurrent() 后断言它不会继续前进。

最小代码或操作示例

kotlin
@OptIn(ExperimentalCoroutinesApi::class)
@Test
fun recordsFinishTime() = runTest {
    launch { delay(500) }
    advanceTimeBy(500)
    runCurrent()
    assertEquals(500L, currentTime)
}

3~5 分钟练习

把延迟改为 750 毫秒,并同步修改推进量与断言。

参考答案

三处都改为 750,执行边界任务后 currentTime 为 750L。

与上一课的联系

第 63 课记录了任务完成时刻;本课只把该时刻写成断言;下一课可比较两个任务的完成时刻。

时效校验

时效校验:2026-09-30(kotlinx-coroutines-test 1.11.0;currentTime 仍为实验性 API,示例已显式 opt-in,未见废弃标记。)

官方参考