c++ - 使用 throw() 说明符模拟方法

标签 c++ mocking googlemock

我正在尝试通过 Google 模拟一个具有 throw() 说明符的虚拟方法。原始函数如下所示:

virtual ReturnValue FunctionName() const throw();  

我收到编译器错误:looser throw specifier for 'virtual FunctionSignature'

这是我到目前为止尝试过的代码:

MOCK_CONST_METHOD0( FunctionName, ReturnValue() );  
MOCK_CONST_METHOD0( FunctionName, ReturnValue() throw() );  
MOCK_CONST_METHOD0( FunctionName, ReturnValue() ) throw(); // Gives a different error entirely.

我已经尝试了几乎所有我能想到的其他组合,但这些是看起来最合乎逻辑的组合。我如何使用 throw() 说明符让 Google 模拟一个方法?

最佳答案

据我所知,您必须使用“内部”GMOCK_METHOD0_ 宏,并使用:

GMOCK_METHOD0_(, const throw(), , FunctionName, ReturnValue)

因为 MOCK_CONST_METHOD0(m, F) 被#defineed 到 GMOCK_METHOD0_(, const, , m, F), gmock/gmock-generated-function-mockers.h#644gmock/gmock-generated-function-mockers.h#347定义那个。

关于c++ - 使用 throw() 说明符模拟方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4922595/

相关文章:

c++ - 使用Armadillo做 `Q.slice(a).col(b)`的更有效方法

c++ - 标准布局类上的偏移量?

java - 不确定如何捕获和重新分配类中的合成成员

c# - 尝试模拟 Microsoft Exchange Web 服务

c++ - 具有 unique_ptr 引用类型参数的模拟函数的 EXPECT_CALL

c++ - 位域的分配是否特定于不同的 Endianness 实现

c# - 代码生成工具,为单元测试创​​建 C# 适配器类?

c++ - 使用模拟测试迭代代码 - 它有意义吗?

c++ - Googletest:如何异步运行测试?

C++/SFML 程序在退出时崩溃