February 7, 2026 作者 nevstop1 分钟
本文整理自知乎专栏原文,并按站点文档风格进行结构化排版。 原文链接
2025Q4,CSM 项目补上了一轮更系统的单元测试建设。借助 JKI VI Tester,这一轮新增了 83 个测项,使 CSM 的单元测试总数增长到 144 个;同时,测试流程已经接入 GitHub Workflow,用来在每次代码变更后自动回归,尽量把框架级回归问题挡在合并之前。
这篇整理版不再照搬知乎原文里的完整测试明细表,而是保留更适合站内阅读和后续维护的内容:为什么要做、覆盖了哪些能力、日常维护时需要注意什么。
对 CSM 这种通信和状态驱动都比较重的框架来说,代码改动最怕的不是单点 bug,而是悄悄打破既有消息链路、广播关系或模块生命周期行为。单元测试的意义就在这里:
原文里引用的详细说明文档见: CSM_Unittest_README(zh-cn)。
当前这套单元测试依赖的基本环境比较直接:
如果你的本地环境需要先对齐工具链,建议先确认 VI Tester 版本与 LabVIEW 版本兼容,再开始补充或调试测试项。
下面两张图分别展示了项目结构和 JKI VI Tester 中的测试执行界面:


这轮单元测试不是只补一两个接口,而是按 CSM 的主要能力分成多个测试类系统推进。
这是最核心的一层,主要验证模块间通信是否可靠:
这一部分本质上是在确保“消息有没有发到”“参数有没有带对”“返回值和错误有没有丢”这三件最基础、也最容易在重构时被破坏的事情。
CSM 的另一个重点是广播和可观测性,因此单元测试也把这块拆得比较细:
其中广播类测试尤其重要,因为它往往跨模块、跨优先级,而且容易受到执行顺序和机台资源状态影响。
为了避免只测到“普通模式下能跑”,这轮测试还覆盖了多种模块结构和框架模式:
这些测试的价值在于,它们把 CSM “不同运行形态下的语义”也一并纳入了回归范围,而不只是验证某几个 API 调用能否通过。
除了框架内部消息机制,原文也专门补上了两类很实用但容易被忽视的能力:
这能帮助框架在与外部工具、上层应用或调试辅助模块协同时保持稳定边界。
把测试数量从 61 个扩到 144 个,真正提升的不只是“覆盖率”这个数字,而是后续迭代的信心边界:
对一个会长期演进的框架来说,单元测试的意义不是一次性把功能证明正确,而是把“未来改坏了怎么办”这件事制度化。
原文里有三条维护约束,迁移到站内后依然值得保留:
如果后续继续扩展测试集,优先保证这三条纪律不被打破,比简单追求“测项越多越好”更重要。
如果你正在维护 CSM 或准备给自己的 LabVIEW 框架补齐自动化验证,这套单元测试的组织方式本身就很值得参考:先把最容易回归的通信语义固定下来,再把广播、日志、生命周期和运行模式逐步纳入持续回归。