我已经问了一个相关的问题,但我没有得到满意的答案。所以,也许我应该换个方式问它。
像 Perl 或 Ruby 甚至 Linux 内核这样的大型 C 项目如何处理单元测试?甚至在任何功能语言中?
我熟悉用于 OOP 中的测试的依赖注入和抽象工厂,但我没有看到非 OOP 中的可扩展和可管理的等效性。例如,在 C 或 Haskell 中,函数层之上会有层,较高层隐式调用较低层。我如何找到接缝来测试一个代码单元而不是它的所有依赖项?
避免所有接缝需要的一种方法是将调用依赖图的深度保持在非常低的水平。可以这么说,水平编码而不是垂直编码。在“叶子”函数中保留尽可能多的应用程序逻辑;并确保“节点”函数除了将数据连接到其他节点/叶函数之外没有任何工作。然后,只测试“叶子”功能;将“节点”功能留给集成测试。这种方法有效吗?
今天最大的软件仍然是用过程语言编写的。必须采用一些有效的方法。具有良好单元测试的程序语言大型软件经验的人可以发表评论吗?