2015-10-29 34 views
2

我需要测试在文件中定义为静态的几个函数(除了在单元测试中,不在此文件以外的任何位置使用)。在静态函数上运行单元测试

要使单元测试文件能够看到我使用声明了这些函数的.h文件尝试的函数,但是这会导致链接错误。 我考虑的一个解决方案是使用工作版本中的静态替换的宏,而不是使用static关键字,在单元测试版本中为空。

但是,我不知道如何使条件依赖于启动项目,而不是始终手动重新定义宏。视为代码旨在TI处理器上运行,我还考虑使用包装函数只在定义WIN32时编译。

我非常希望听到有关这些想法和更好想法的反馈意见。 谢谢!

+0

请发布你的链接错误,可能会帮助别人帮助你。 – CurlyCorvus

+1

只需使用非静态功能?摆弄宏等是不值得的 – stijn

+0

可能重复[如何测试使用谷歌测试C的静态函数](http://stackoverflow.com/questions/32094797/how-to-test-static-functions-of- C-使用-谷歌检验) –

回答

4

在源文件中,你需要

#ifndef UNITTESTS 
    #define STATIC 
#else 
    #define STATIC static 
#endif 

然后,当你建立你的单元测试通过-DUNITTESTS使

否则考虑在你的测试你的源文件,即

#include "file.c"