4

我开始更多地进行单元测试。我有一个项目,其中 Excel 是“引擎”并且无法取出(此时)。我需要为工作簿提供各种输入,在工作簿中运行宏,然后收集结果。这是一个巨大的讨厌的工作簿,所以现在不能从中取出任何东西。

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

4

2 回答 2

4

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

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

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

这将 Interop 排除在外,并允许您单独对这些部分进行单元测试。

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

于 2013-10-14T17:48:05.713 回答
0

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

这听起来对你来说不会给你带来太多好处,因为你说这真的很讨厌。听起来您有很多重构工作要做​​。

于 2013-10-14T17:43:55.270 回答