在C ++ 11中使用HippoMocks成员的gtest派生类的编译错误更宽松的抛出说明符

时间:2017-07-17 21:43:27

标签: c++11 googletest gmock hippomocks

在编译我的测试用例时,我遇到了以下错误:使用C ++ 11测试google测试的测试。如果我的派生类有HippoMock :: MockRepository成员,则会抛出以下错误。

  

虚拟MyTestClass :: ~MyTestClass的looser throw说明符   noexcept(false)错误覆盖'虚拟测试:: Test :: ~Test()   noexcept(真)'

由于HippoMock :: MockRespository析构函数抛出异常并定义为noexcept(false),因此报告此错误,但google test析构函数定义为'虚拟测试:: Test :: ~Test()'

分辨率:

  1. 将所有派生的析构函数标记为noexcept(false)。不过这是 由于HippoMock :: MockRepository抛出,因此不可行并可能导致崩溃 析构函数的异常。
  2. 声明google test testing :: Test :: ~Test()noexcept(false)。然而 我真的不知道后果,也是我们使用的新代码 谷歌模拟。
  3. 请注意,由于遗留代码包含大量HippoMocks代码,因此无法用Google Mock替换所有代码。还有更新的代码使用谷歌模拟。

    我只是想知道, 定义gtest testing :: Test :: ~Test()noexcept(false)会产生什么后果?

1 个答案:

答案 0 :(得分:0)

通过更新到最新版本的HippoMocks解决了这个问题 https://github.com/dascandy/hippomocks