繁体   English   中英

模拟框架的新手

[英]New to mocking frameworks

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

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

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

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

简答

如果您没有抽象类或接口,那么您将不得不使用TypeMockMicrosoft的 Fakes等产品。

答案很长

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

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

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

没有接口的模拟类对于您无法控制的代码非常有用。 但它仍然很难,随着时间的推移会变得笨拙和复杂。

让你的测试与你交谈。 如果您的测试很难处理,或者设置很复杂,那么这意味着您的代码需要重构。 不要忽视这些反馈。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM