我已经开始使用HippoMocks编写单元测试了。我想知道是否可以模拟非虚拟类方法?
乍一看代码,似乎表明框架只支持虚拟方法。但由于它支持简单C函数的模拟,因此应该可以对非虚类方法执行相同的操作。
有没有办法做到这一点?
发布于 2015-09-05 02:01:14
这并不是不可能的,但它会导致非常奇怪的使用机制-或者没有线程安全的可能性。
C函数总是被人嘲笑。在这种情况下,它总是重定向到mock,你不能再调用原始的了。
C++虚函数只为所请求的对象模拟,而任何其他对象仍将在那里具有常规函数。
C++非虚函数看起来像一个虚函数,但仅在每个类级别上是可模拟的。你的编译器也很可能会内联这些函数,使得它不太可靠。
我从一个盲目应用它的人那里得到了一个补丁,它受到了所描述的问题的影响。您需要100%确定对该成员函数的任何访问都不是内联的,这几乎是不可能的。
https://stackoverflow.com/questions/29675688
复制相似问题