Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我开始使用 HippoMocks 来编写单元测试。我想知道是否可以模拟非虚拟类方法?
乍一看代码似乎表明该框架仅支持虚拟方法。但由于它支持模拟简单的 C 函数,因此应该可以对非虚拟类方法执行相同的操作。
有没有办法做到这一点?
这不是不可能的,但它会导致非常奇怪的使用机制——或者没有线程安全的可能性。
C 函数总是被嘲笑。在那种情况下,它总是重定向到模拟,你不能再调用原来的了。
C++ 虚函数仅针对请求的对象进行模拟,任何其他对象仍将在那里具有常规函数。
C++ 非虚函数看起来像一个虚函数,但只能在每个类级别上模拟。您的编译器也很可能会内联这些函数,使其不太可能可靠。
我从某人那里得到了一个补丁,只是盲目地应用它,它遇到了所描述的问题。您需要 100% 确保对该成员函数的任何访问都不是内联的,这几乎是不可能的。