gpt4 book ai didi

.net - 模拟框架的新手

转载 作者:行者123 更新时间:2023-12-03 22:20:16 26 4
gpt4 key购买 nike

我正在尝试以单个开发人员的身份进行测试驱动开发(可能将团队增加到四个)。我有使用 NUnit 进行单元测试的有限扩展经验。

我已经开发这个系统几年了(VB.NET)。我之前的开发人员在该系统上工作了三年,他喜欢 Martin Fowlers 事务脚本方法,这意味着有大型类具有大型单片功能,几乎没有考虑设计/可重用性等。

我研究了一些可用于 Nunit 的 Mocking 框架,我相信我唯一的选择是商业产品 TypeMock (RhinoMock vs. TypeMock vs. NUnit's Mocking?),因为它允许您模拟非抽象且没有接口(interface)的类。它是否正确?

我在这里阅读了一些帖子,表明情况并非如此。因此提出这个问题的原因。我可以为事务脚本/单片系统使用任何免费的模拟框架吗?

最佳答案

简短回答

如果你没有抽象类或接口(interface),那么你将不得不使用像 TypeMock 这样的产品。或 Microsoft's Fakes .

长答案

不要走这条路。 TDD 的主要优点是它迫使您拥有松散耦合的代码和清晰的抽象。没有它,那么你的测试将变得非常难以设置和维护。

你真正需要做的是重构。 慢慢地。这是我的建议。

  • 首先找到一个难以测试的组件,并确定所有依赖项。
  • 开始从这些类中提取接口(interface),然后使依赖类依赖于接口(interface)。
  • 通过构造函数或属性使它们“可注入(inject)”来反转依赖关系。
  • 开始编写测试来描述该类的行为,模拟依赖关系。
  • 冲洗重复,直到您可以开始驯服您的代码库。

  • 没有接口(interface)的模拟类对于您无法控制的代码很有用。但这仍然很困难,并且随着时间的推移会变得笨拙和复杂。

    让您的测试与您交谈。 如果您的测试难以使用或设置复杂,则意味着您的代码需要重构。 不要忽视这些反馈。

    关于.net - 模拟框架的新手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17503124/

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