在使用 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()'
解析度:
- 将所有派生的析构函数标记为 noexcept(false)。然而,这是不可行的,并且可能导致崩溃,因为 HippoMock::MockRepository 从析构函数中抛出异常。
- 声明 google test testing::Test::~Test() noexcept(false)。但是我真的不知道后果,还有我们使用谷歌模拟的新代码。
请注意,由于遗留代码包含大量 HippoMocks 代码,因此用 Google Mock 替换所有代码是不可行的。更新的代码也使用谷歌模拟。
我只想知道,定义 gtest testing::Test::~Test() noexcept(false) 有什么后果?