我是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
}
#if(ERROR_REPORT == ON)
//...
#endif
是 - 正如您所说 - 一个预处理器命令(如果在编译时将ERROR_REPORT
定义为ON
,则只会编译其间的文本。
你可以对这段代码进行单元测试:为ReportError()
创建一个存根/模拟(你可能需要应用依赖注入或类似的插入存根/模拟 - 网上有很多很好的框架和教程,例如gmock)和或者创建两个测试类(一个将ERROR_REPORT
定义为ON
,另一个不定义)或编译整个测试可执行文件两次(一个使用ERROR_REPORT
定义ON
)并且您的预期测试结果也取决于ERROR_REPORT
的值。