慢慢

应用与界面 · 2026-06-05

Compose 界面看起来能点,为什么还不算完成

按钮有涟漪、弹层能出现,只能证明界面响应过一次。核心路径还要继续追到状态更新、DataStore 写入、重新打开后的结果和构建产物。

燃日的页面很早就有按钮、筛选、选择器和完成勾选。截图上看,它们都像能用。审核时才发现,控件外观、点击响应、业务状态和持久化是四件不同的事。能画出按钮,只能证明它被画出来了。 assembleDebug 通过,也只说明代码能够打包。

我沿着核心路径往下追。目标筛选要同时看到选中状态、 matchesGoalFilter 的判断和单元测试。新建目标要经过表单、ViewModel、Repository 再写进 DataStore。每日任务和一次性任务要走不同的完成规则。提醒则要经过权限、WorkManager 调度和通知 Worker。

目标筛选最初很像分段控件,但评审仍要求确认它不是假控件。后来筛选逻辑单独提取,并增加了已完成、进行中和过期未完成的测试。天数选择器与提醒选择器长得相近,截图曾经拿错。仓库现在分别保留“选择倒计时天数”和“选择提醒时间”的 Compose UI 测试路径。

浮动底栏盖住列表时,卡片本身没有问题。要改的是页面底部内容 padding,让最后一项能滚到导航上方。完成标准也要拆开,设计验收看画面,交互验收看状态,数据验收看持久化,工程验收看测试和构建。任何一项替另一项作证,都会留下“看起来能点”的假完成。

当前本地门禁会跑进度与筛选单元测试,并构建 debug、release APK。Compose UI 测试已经写进仓库,用来描述首次打开与两个选择器路径;如果没有设备环境执行,就只记录用例存在,不把它写成已经通过。

我开始把看得见、点得动、存得住、重开还在拆成四份证据。这样写验收记录会麻烦一点,却能防止一张漂亮截图替整个功能签字。