19.4 测试覆盖

你可以对 Lisp 代码文件进行覆盖度测试: 先加载 testcover 库, 然后执行命令 M-x testcover-start RET file RET 为代码插桩。 接着调用一次或多次待测试代码。 之后执行命令 M-x testcover-mark-all, 代码会显示彩色高亮,标记出覆盖度不足的位置。 命令 M-x testcover-next-mark 会将光标向前移动到下一个高亮位置。

默认情况下: 红色高亮表示该表达式从未被完整求值; 棕色高亮表示该表达式求值结果始终相同(说明对结果的后续处理测试不足)。 但对于不可能完成求值的表达式(如 error),会跳过红色高亮; 对于预期求值结果始终相同的表达式(如 (setq x 14)),会跳过棕色高亮。

对于复杂场景,你可以在代码中添加空操作宏,为测试覆盖工具提供提示。

Macro: 1value form

form 求值并返回其结果,同时告知覆盖度测试工具:该表达式的求值结果应始终相同。

Macro: noreturn form

form 求值,同时告知覆盖度测试工具:该表达式应永不返回。 若该表达式实际返回了值,会触发运行时错误。

Edebug 也提供覆盖度测试功能(see 覆盖度测试)。 这些功能存在部分重叠,将其整合会更合理。

emacs

Emacs

org-mode

Orgmode

Donations

打赏

Copyright

© 2025 Jasper Hsu

Creative Commons

Creative Commons

Attribute

Attribute

Noncommercial

Noncommercial

Share Alike

Share Alike