我在编译从测试派生的测试用例时出现以下错误::使用 C++11 测试谷歌测试。如果我的派生类有 HippoMock::MockRepository 成员,则会抛出以下错误。
虚拟 MyTestClass 的更宽松的抛出说明符::~MyTestClass noexcept(false( 错误覆盖"虚拟测试::测试::~测试(( noexcept(true('
由于 HippoMock::MockRespository 析构函数抛出异常并定义为 noexcept(false(,因此报告此错误,但是 google test 析构函数定义为"虚拟测试::Test::~Test((">
分辨率:
- 将所有派生析构函数标记为 noexcept(false(。然而,这是 不可行,可能会导致崩溃,因为 HippoMock::MockRepository 抛出 析构函数的异常。
- 声明 google test testing::Test::~Test(( noexcept(false(。然而 我真的不知道后果,还有我们较新的代码使用 谷歌模拟。
请注意,由于遗留代码包含大量HippoMocks代码,因此无法将所有代码替换为Google Mock。此外,较新的代码正在使用谷歌模拟。
我只想知道, 定义 gtest 测试的后果是什么::Test::~Test(( noexcept(false( ?
此问题已通过更新到最新版本的 HippoMocks 来解决 https://github.com/dascandy/hippomocks。