我决定为我的库添加测试。问题是大多数(所有?)测试框架都使用相同的方法:构建一个包含要测试的代码、测试和框架的可执行文件。
但是如果我有一个很重的库(里面有很多代码)但只有几个公共函数/类怎么办?在这种情况下,我无法很好地测试它,直到:
- 我从库中导出所有符号
- 我构建包含所有库源的可执行文件
广告。1:不好看
广告。2:当我使用 Visual Studio 时,它需要我将库项目与“测试”可执行项目(添加/删除文件等)同步。所以它对我来说也不好看。
还有其他方法吗?
通常,测试驱动编程适用于许多小型“单元”。拥有一些臃肿的“单元”会使测试阶段无法忍受!
我看到的唯一可行的解决方案是隔离代码的特定部分,然后使用调试器进入它们。拥有许多private
功能通常会导致上述问题,并且由于您无法在单元测试期间直接访问它们,因此您应该真正考虑将调试器用于不明显的情况。
如果你能做到 2),那么你应该能够像这样重新组织你的文件/文件夹/项目;
1) 一个包含所有内部函数和对象的静态库项目 2) 一个使用任何框架的测试项目(有很多框架都带有 pro&con,我建议如果你是初学者,选择集成解决方案或简单框架)。该测试项目必须依赖于静态库(在解决方案资源管理器菜单中添加依赖项)。所以你可以在你的内部实现上添加测试
现在是外部api。
3) 您的旧 DLL 项目只保留公共 API 定义和实现。并取决于静态库。
4)为您的公共api添加一个测试项目
无需两次同步项目和编译代码,通过努力,您可以测试的不仅仅是外部 api,而无需任何内部代码更改。