gpt4 book ai didi

c++ - 是否可以模拟或重载对 Boost::Filesystem(.hpp) 的直接引用?

转载 作者:太空宇宙 更新时间:2023-11-04 11:55:53 25 4
gpt4 key购买 nike

我正在尝试帮助设计一些围绕 Qt C++ 应用程序中的 Controller 的单元测试。

坦率地说,我有两个很大的缺点。第一,我的测试背景主要基于 .NET 项目,因此我对 C++ 世界中最佳实践的了解充其量是微不足道的。第二,我正在查看的应用程序的设计者没有在设计代码时考虑单元测试。

一个具体的要点,我正在查看一个包含 boost/filesystem/operations.hpp 的 Controller 类。 Controller 构造函数继续检查目录是否存在并使用 boost 文件系统代码中的函数创建目录。

有什么方法可以重载或模拟这种行为吗?我习惯于在 .NET 中设置 IoC 容器或至少依赖注入(inject)构造函数,然后能够在单元测试代码中传递模拟对象。不过,我不确定模板化头文件如何与该概念一起使用,或者它是否是 c++ 中的典型做法。

目前,我无法灵活地建议代码更改,因为本周将发布一个版本。但在那之后,如果有一些简单的代码更改可以提高可测试性,那绝对是一个选择。理想情况下,有一种方法可以按原样在单元测试框架中重载文件系统函数。

最佳答案

我们最终创建了一个调用 Boost 文件系统的通用文件系统包装器,并将其作为我们类构造函数的参数接受,这样我们就可以在单元测试时发送模拟版本。

我理解不要 mock 这个的想法,但我认为快速单元测试对于我们的 CI 环境在 checkin 时运行以及实际命中文件系统的测试是有值(value)的。

关于c++ - 是否可以模拟或重载对 Boost::Filesystem(.hpp) 的直接引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16175367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com