人们将如何测试整个程序?到目前为止,我唯一能想到的是:
我可以编译二进制文件并在其上运行测试套件,但这将需要一种独立于系统的方式在C中进行调用,这是基于其他 问题的噩梦。我可能会想出Boost.Process,但Boost目前不是依赖项,因此我宁愿不添加它只是为了进行测试。
或者,使用下面的一些预处理器内容(未经测试),我也许可以重命名该main
函数,使其在头文件中定义,并将其包括在测试套件中。
#ifdef TEST_MAIN
#include "progname.h"
int main_test(...){
#else
int main(...){
#endif
这是必需的还是有更明显的方法来解决?如果有关系,我正在使用CMake和Check。
在过程中的测试工具方面停止思考,你只是问了麻烦。
相反,告诉您的构建系统使用进程外方法,例如perl中的TAP。TAP是一个接口,但该线束的默认实现是prove(1)
。
TAP可在任何类型的可执行文件上运行,包括shell脚本,perl脚本和刚刚编译的二进制文件。您很可能需要在主要可执行文件周围编写某种Shell(或其他语言)脚本。为测试套件需要一些外壳(例如MinGW)完全可以,这不会影响程序的运行时依赖关系。
...
就是说,您可以只main
用一行包装real_main
。无需预处理器。但是请注意,即使您自己的代码很干净,C库中还是有很多全局变量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句