【发布时间】:2015-06-18 15:24:23
【问题描述】:
我们的代码库包含一组组件。每个组件都包含内置于静态库中的独立项目形式的“通用”/可重用代码。组件示例:UI 小部件、容器、网络等。
当我为我们的 UI 小部件编写单元测试时,我实际上是在构建一个链接到“UI Widgets”静态库的可执行文件。
当涉及到模拟时,这会使事情变得复杂。我读过的普通模拟方法(依赖注入/控制反转)的演示方式在被模拟的代码已经编译时似乎很难(如果不是不可能的话)。
如果我的 UI Widgets 静态库包含大约 20 个类的实现,我可能只需要模拟其中的 5 个。所以我需要以某种方式告诉我的测试可执行文件使用静态库中的 15 个符号,但忽略 5 个(并支持另一个库中的模拟实现,或者理想情况下直接编译到测试可执行文件中)。
如何有效地模拟静态库中的类?我可以通过使用运行时多态性 + 接口模式想出一些方法来做到这一点,但是我也希望能够使用模板进行模拟。仅基于我的项目结构,在这里使用模板对我来说似乎更遥不可及。
【问题讨论】:
标签: c++ unit-testing mocking