我开始使用HippoMocks编写单元测试。我想知道是否有可能模拟非虚拟类方法?
首先看代码似乎表明框架只支持虚方法。但是因为它支持简单C函数的模拟,所以应该可以对非虚拟类方法执行相同操作。
有没有办法实现这个目标?
答案 0 :(得分:1)
这不是不可能的,但它会导致非常奇怪的使用机制 - 或者没有线程安全的可能性。
C函数总是被嘲笑。在这种情况下,它总是重定向到模拟,你不能再调用原文。
C ++虚函数仅针对请求的对象进行模拟,任何其他对象仍然具有常规函数。
C ++非虚函数看起来像一个虚函数,但只能在每个类级别上进行模拟。您的编译器也很可能会内联这些函数,使其不太可靠。
我从某个人那里得到了一个盲目应用它的补丁,并且它遇到了所描述的问题。您需要100%确定没有内联对该成员函数的任何访问,这几乎是不可能的。