我正在探索 TDD(测试驱动开发)来测试我用 C 和 C++ 编写的代码。我选择使用Google Test作为单元测试框架。我选择使用 FFF 作为模拟框架。
我已经编写了一些测试并运行它们,效果很好。但我遇到了一个问题,我无法在网上找到任何参考,我希望社区可以帮助我(这也会帮助其他人)。
我遇到的问题是我想为函数 A1 编写一个测试(参见下面的场景 1)。由于它调用了另外三个函数(B1、B2 和 B3),并且它们有很多依赖项,因此我决定模拟它们,以便可以测试可能影响函数 A1 行为的各种场景。为了使模拟工作并避免链接器错误(例如“B1 的多重定义”),我需要在函数(B1、B2 和 B3)之前编写“属性((weak))”。到目前为止,一切都很好。一切都很好。
现在,考虑下面的场景 2。在这种情况下,我想在单独的测试中测试功能 B1。同样,我也会模拟它调用的函数(C1、C2、C3)。然而,问题是我无法调用“真正的”B1 函数,因为如果我这样做,我将获得我之前在 A1 函数测试中定义的模拟函数(在场景 1 下)。
那么遇到这种情况我该怎么办呢?谢谢。