1

在使用 C++11 编译来自 testing::Test of google test 的测试用例时,我遇到了错误。如果我的派生类具有 HippoMock::MockRepository 成员,将引发以下错误。

虚拟 MyTestClass::~MyTestClass noexcept(false) 错误覆盖 'virtual testing::Test::~Test() noexcept(true)' 的更宽松的抛出说明符

由于 HippoMock::MockRespository 析构函数抛出异常并定义为 noexcept(false) ,因此报告此错误,但是谷歌测试析构函数定义为 'virtual testing::Test::~Test()'

解析度:

  1. 将所有派生的析构函数标记为 noexcept(false)。然而,这是不可行的,并且可能导致崩溃,因为 HippoMock::MockRepository 从析构函数中抛出异常。
  2. 声明 google test testing::Test::~Test() noexcept(false)。但是我真的不知道后果,还有我们使用谷歌模拟的新代码。

请注意,由于遗留代码包含大量 HippoMocks 代码,因此用 Google Mock 替换所有代码是不可行的。更新的代码也使用谷歌模拟。

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

4

1 回答 1

0

这已通过更新到最新版本的 HippoMocks https://github.com/dascandy/hippomocks解决。

于 2017-08-09T18:24:06.883 回答