使用 Excel 工作簿进行单元测试

本文关键字:单元测试 工作簿 Excel 使用 | 更新日期: 2023-09-27 18:35:21

我开始更多地进入单元测试。我有一个项目,其中Excel是"引擎",目前无法将其取出。我需要为工作簿提供各种输入,在工作簿中运行宏,然后收集结果。这是一个巨大的令人讨厌的工作簿,所以现在从中取出任何东西都不是一种选择。

因此,鉴于主要依赖项是 Excel.Interop 对象,如何在几乎所有代码都命中 Excel 的情况下设置单元测试?

使用 Excel 工作簿进行单元测试

理论上,"单元测试"应该尽可能少地测试,并尽可能多地模拟依赖项。 使用Excel,如果不是不可能的话,这可能非常棘手。

理想情况下,我认为测试将是:

  • 对应用逻辑进行单元测试,通过提供查找特定输入并提供硬编码输出的"模拟"(说起来容易做起来难)来抽象出 Excel。 基本思想是"我的输入是否有效"和"我是否返回了所有必需的输出"
  • 通过提供硬编码输入并验证输出,在 Excel 中对 Excel 宏进行单元测试。

这样就可以将互操作排除在外,并允许您单独对这些部分进行单元测试。

将它们放在一起更像是一个集成测试(通常不是自动化的),而不是单元测试。

那会很艰难。一种开始方法是添加另一个抽象级别。围绕 excel 依赖项制作一个包装器,然后将其模拟出来。

这听起来对你来说不会买多少东西,因为你说这真的很讨厌。听起来你有很多重构要做。