为单元测试构建过程代码

Structuring procedural code for unit tests

如果您打算为 C 程序编写单元测试,那么放置 main 函数的约定是什么?您是否将它放在它自己的单独文件中,将函数放在另一个文件中,这样您就可以将函数文件包含在测试中而不会与两个主要方法发生冲突?这对我来说很有意义,但只是想知道是否有某种约定。

我问是因为我们有几个难以维护的 SQR 程序在工作,我想尝试一下让他们接受测试,但我需要一种从另一个文件调用函数的方法,所以我想我的第一步是把开始程序-结束程序部分放在一个单独的文件中。

最好使用单元测试框架,例如 Check、Cmocka 等。这些框架提供了许多有用的测试函数和宏,并提供处理故障报告的单元测试工具。像 CUnit 这样的框架还通过分叉它们来将测试彼此隔离,这可以保护测试工具免受缓冲区溢出,并防止测试相互干扰。

如果您确实想要或必须自己动手,那么我会将 "Harness" 代码放在一个 c 模块中,并将单元测试放在一个单独的文件中。您还希望测试将自己注册到 harness,而不是相反。如果您的平台没有移植其他单元测试框架,那么您可以在其他地方重用线束代码。