gpt4 book ai didi

c# - 单元测试遗留代码 : limits of "extract and override" vs JustMock/TypeMock/moles?

转载 作者:行者123 更新时间:2023-11-30 17:16:37 24 4
gpt4 key购买 nike

给定以下条件:

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

与使用 extract&override + 例如犀牛模拟?除了绕过 private/protected 之外,是否存在我不知道的情况,在哪些情况下确实需要使用 TypeMock/JustMock 等?我特别欢迎已经改用其中一种产品的人提供一些经验。

使用 extract&override 似乎解决了处理旧遗留代码时的所有问题,重构似乎非常简单,引入错误的可能性似乎很小。编写更少的测试代码的好处是什么?更漂亮的类(class)更少虚拟保护的东西?现在,我还没有“明白”,尽管我知道首先单独测试私有(private)方法非常有帮助,因为在这种旧的遗留代码库中,公共(public)方法在幕后可能太大了。

如果您不知道提取和覆盖是什么:请参阅 here .

最佳答案

框架之间存在许多差异,这些差异与构建框架所基于的技术无关。

例如:

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

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

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

免责声明 - 我在 Typemock 工作

关于c# - 单元测试遗留代码 : limits of "extract and override" vs JustMock/TypeMock/moles?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7096790/

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