🧠 图解记忆:锁输入、锁环境、控非确定性,才能得到可比较结果;点击图片可查看原图。
按这四条答基本满分:- 确定性: 固定随机种子、固定时区、固定 locale,禁止依赖"当前时间"做断言(用注入的 Clock);
- 隔离性: 每个用例独立数据,跑完清理现场(teardown),不留脏数据;
- 顺序无关: 用例之间无共享可变状态,能并行就并行;
- 环境无关: 数据库用内存版或测试容器,网络用替身,环境变量在 fixture 里统一注入。
加分项: 说出"幂等性"(同一用例跑 N 次结果一致)和"可定位性"(失败时能一眼看出是哪个用例、哪条数据、哪个断言挂了)。
面试话术:
"我会把 harness 当产品设计:确定性靠固定种子和注入时钟,隔离性靠每用例独立数据 + teardown,顺序无关靠无共享可变状态,环境无关靠内存库和网络替身。再加幂等和可定位——失败日志要能直接定位到用例、数据和断言。"
