编译错误 松散的抛掷说明符,用于 C++11 中具有 HippoMocks 成员的 gtest 派生类



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

虚拟 MyTestClass 的更宽松的抛出说明符::~MyTestClass noexcept(false( 错误覆盖"虚拟测试::测试::~测试(( noexcept(true('

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

分辨率:

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

请注意,由于遗留代码包含大量HippoMocks代码,因此无法将所有代码替换为Google Mock。此外,较新的代码正在使用谷歌模拟。

我只想知道, 定义 gtest 测试的后果是什么::Test::~Test(( noexcept(false( ?

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

最新更新