【问题标题】:Is there any mocking framework that allows to mock std::ifstream and other I/O libraries?是否有任何模拟框架允许模拟 std::ifstream 和其他 I/O 库?
【发布时间】:2019-03-20 07:56:34
【问题描述】:

我在一个非常古老的 C++ 项目上工作,该项目有一个需要模拟的巨大数据库。 我正在尝试模拟 ifstream 库以测试对文件的控制,问题是我无法更改我的旧代码,所以我很难找到模拟能力而不更改任何代码 提前致谢

【问题讨论】:

  • 你试过GMock吗?
  • afaik,gmock 仅适用于虚拟方法。
  • 您正在测试的函数是采用ifstream& 参数还是istream& 参数?
  • @selbie 你是对的,Gmock 只适用于虚拟方法,不幸的是,这对我来说不是一个选项,因为我无法重构我的任何代码
  • @RichardHodges ifstream& 参数

标签: c++ testing mocking


【解决方案1】:

Mocking 使用多态(实现给定接口),所以有两种选择:

  • 当库提供选项时使用动态多态性。对于 ifstream,AFAIK 并非如此。

  • 使用静态多态(模板),这意味着遗留库提供了使用 if 流以外的其他内容的选项。

我认为您的旧版应用程序不提供这些选项中的任何一个,因此您现在必须在没有模拟的情况下对其进行测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-09
    • 2011-04-05
    • 1970-01-01
    • 2018-04-21
    • 1970-01-01
    • 2014-06-09
    • 1970-01-01
    相关资源
    最近更新 更多