1

我开始使用 HippoMocks 来编写单元测试。我想知道是否可以模拟非虚拟类方法?

乍一看代码似乎表明该框架仅支持虚拟方法。但由于它支持模拟简单的 C 函数,因此应该可以对非虚拟类方法执行相同的操作。

有没有办法做到这一点?

4

1 回答 1

1

这不是不可能的,但它会导致非常奇怪的使用机制——或者没有线程安全的可能性。

C 函数总是被嘲笑。在那种情况下,它总是重定向到模拟,你不能再调用原来的了。

C++ 虚函数仅针对请求的对象进行模拟,任何其他对象仍将在那里具有常规函数。

C++ 非虚函数看起来像一个虚函数,但只能在每个类级别上模拟。您的编译器也很可能会内联这些函数,使其不太可能可靠。

我从某人那里得到了一个补丁,只是盲目地应用它,它遇到了所描述的问题。您需要 100% 确保对该成员函数的任何访问都不是内联的,这几乎是不可能的。

于 2015-09-04T18:01:13.657 回答