Gtest对测试C代码有什么用?是否可以在gtest单元测试中测试代码之间的预处理器语句?

时间:2018-11-12 07:11:49

标签: c unit-testing googletest vs-unit-testing-framework

我是gtest单元测试的新手,能否请您建议如何从以下程序开始

FUNC()
    {
        int errorId =1;
        if(!Func1())
        {
            error = True;
        }
        else
        {
            Func2(FALSE); 
        }
        /* Can i able to perform unit test for below line ? */
        #if(ERROR_REPORT == ON)
        if(errorId != NO_ERROR)
        {
            ReportError(ID, errorId);
        }
        #endif
    }

1 个答案:

答案 0 :(得分:0)

#if(ERROR_REPORT == ON)
//...
#endif

是-如您所正确说明的-预处理程序命令(仅当在编译时将ERROR_REPORT定义为ON时,才会编译中间的文本。

可以对该代码进行单元测试:为ReportError()创建存根/模拟(您可能需要应用依赖项注入或类似方法来插入存根/模拟-有在网络上为此提供了很多好的框架和教程,例如gmock),并创建了两个测试类(一个将ERROR_REPORT定义为ON的测试类,另一个而不是)或两次编译整个测试可执行文件(其中一个由ERROR_REPORT定义为ON),并且您期望的测试结果还取决于ERROR_REPORT的值。