我是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
}
答案 0 :(得分:0)
#if(ERROR_REPORT == ON)
//...
#endif
是-如您所正确说明的-预处理程序命令(仅当在编译时将ERROR_REPORT
定义为ON
时,才会编译中间的文本。
您可以对该代码进行单元测试:为ReportError()
创建存根/模拟(您可能需要应用依赖项注入或类似方法来插入存根/模拟-有在网络上为此提供了很多好的框架和教程,例如gmock),并创建了两个测试类(一个将ERROR_REPORT
定义为ON
的测试类,另一个而不是)或两次编译整个测试可执行文件(其中一个由ERROR_REPORT
定义为ON
),并且您期望的测试结果还取决于ERROR_REPORT
的值。