3

鉴于以下条件:

  • 一个非常古老的大型 C# 遗留代码库,没有任何测试覆盖
  • (几乎)每个类都派生自某个接口
  • 没有什么是密封的

与使用 extract&override + 例如 RhinoMocks 相比,使用 Profiler-API 驱动的解决方案(如 JustMock 和 TypeMock)有哪些实际好处?有没有我不知道的情况,除了规避私有/受保护之外,真的需要使用 TypeMock/JustMock 等吗?我特别欢迎人们从已经改用其中一种产品的人那里获得一些经验。

使用 extract&override 似乎可以解决处理旧代码时的所有问题,重构似乎非常简单,并且引入错误的可能性似乎很小。减少测试代码的好处是什么?更漂亮的课程,更少的虚拟保护内容?现在,我不“明白”,尽管我知道首先单独测试私有方法非常有帮助,因为在这些旧的遗留代码库中,公共方法可能太大了。

如果您不知道什么是 extract&override:请参见此处

4

1 回答 1

3

框架之间存在许多差异,这些差异不考虑框架所基于的技术。

例如:

  • API - 每个框架都有不同的符号和默认值(例如,严格默认值与宽松默认值)
  • 支持 - 专有框架通常提供许可证支持
  • 价格 - 这不是使用问题,但需要预算

Extract&Override 的主要优点是它需要一些重构,如果您正在处理的代码被忽略,它提供了一个很好的机会来重新审视它并将其重构为更好的代码,而不仅仅是为了可测试性。

使用隔离框架的主要优点是您不需要更改被测代码(如果它是一个大型代码库,为了可测试性而重构它可能需要很长时间)。此外,隔离框架不会强迫您进行特定设计,如果遗留代码更好地匹配其现有设计,这可能会有所帮助。另一个在遗留代码中有用的特性是交换在测试代码中创建的实例,通常重构实例需要更多的努力,这可以节省。最后一件事是伪造 3rd 方代码 - 使用隔离框架,您可以在不使用包装类的情况下隔离不属于您的代码。

免责声明 - 我在 Typemock 工作

于 2011-08-18T07:50:30.587 回答