首页 > 解决方案 > 我们可以在 C++ 命名空间下的 Gtest 中模拟或包装函数调用吗

问题描述

我是 GTest 的新手,我有这样的场景:

电源.h

namespace power {
  enum Result {
   ResultOK,
   ResultFailed,
};
  Result invoke(some argument);
  Result setPowerManager(bool& flag);
  Result getPowerManager(bool & flag);
}

电源.cc

namespace power {
  
   Result invoke()
   { 
      // does something
      Write System call
     return ResultValue;

   }
   Result setPowerManager(bool& flag)
   {
     // 
     return invoke(some argument) //calls invoke 
   }
   Result getPowerManager(bool & flag)
   {
    // 
     return invoke(some argument) //calls invoke
   }

}

我需要编写测试来测试 GetPowerManager

样本测试.cc

Test(TestName,Checking)
{
  EXPECT_EQ(Result_OK,setPowerManager(true));
}

如何为这种场景编写单元测试用例,实际上场景太大了?

我的目的是只测试 GetPowerManager API。如何使用模拟技术或 LD 包装等其他技术绕过我的调用函数和系统写入调用?

标签: c++mockingsystem-callsldgoogletest

解决方案


推荐阅读