你可以对 Lisp 代码文件进行覆盖度测试:
先加载 testcover 库,
然后执行命令 M-x testcover-start RET file RET 为代码插桩。
接着调用一次或多次待测试代码。
之后执行命令 M-x testcover-mark-all,
代码会显示彩色高亮,标记出覆盖度不足的位置。
命令 M-x testcover-next-mark 会将光标向前移动到下一个高亮位置。
默认情况下:
红色高亮表示该表达式从未被完整求值;
棕色高亮表示该表达式求值结果始终相同(说明对结果的后续处理测试不足)。
但对于不可能完成求值的表达式(如 error),会跳过红色高亮;
对于预期求值结果始终相同的表达式(如 (setq x 14)),会跳过棕色高亮。
对于复杂场景,你可以在代码中添加空操作宏,为测试覆盖工具提供提示。
对 form 求值并返回其结果,同时告知覆盖度测试工具:该表达式的求值结果应始终相同。
对 form 求值,同时告知覆盖度测试工具:该表达式应永不返回。 若该表达式实际返回了值,会触发运行时错误。
Edebug 也提供覆盖度测试功能(see 覆盖度测试)。 这些功能存在部分重叠,将其整合会更合理。