C - 测试主要功能的最简单方法是什么?

时间:2014-10-25 02:34:02

标签: c testing

如何测试整个程序?到目前为止,我能想到的唯一事情是:

我可以编译二进制文件并运行测试套件,但这需要一个独立于系统的方式来在C中调用它,这是一个基于other questions的噩梦。我可能想出Boost.Process,但Boost目前不是依赖项,所以我不想仅仅为了测试而添加它。

或者,使用下面的一些预处理器(未经测试),我可能能够重命名main函数,在头文件中定义它,并将其包含在测试套件中。

#ifdef TEST_MAIN
#include "progname.h"
int main_test(...){
#else
int main(...){
#endif

这是必要的还是有更明显的方法来解决这个问题?如果重要,我正在使用CMake和Check。

1 个答案:

答案 0 :(得分:2)

不再考虑进程内测试工具,只是要求解决问题。

相反,请告诉构建系统使用进程外方法,例如来自perl的TAP。 TAP是一个接口,但线束的默认实现是prove(1)

TAP可以处理任何类型的可执行文件,包括shell脚本,perl脚本和刚刚编译的二进制文件。您很可能需要在主可执行文件周围编写某种shell(或其他语言)脚本。对于你的测试套件需要一些shell(例如MinGW' s)是完全可以的,它不会影响你的程序的运行时依赖性。

...

也就是说,你可以让main成为real_main周围的单行包装器。无需预处理器。但请注意,即使您自己的代码是干净的,C库中也有批次全局变量。