【发布时间】:2013-09-06 20:48:07
【问题描述】:
Microsoft Fakes 是一个相对较新的框架,我对这个问题的所有方面也相对较新,所以我需要详细的答案。
我被赋予了“单元测试”一个应用程序的任务,我们将其称为旧版应用程序(由 Michael Feathers 定义),特别是使用 Microsoft Fakes 框架。我的经理建议使用 Fakes 的原因是它能够允许围绕外部依赖项和 API 进行单元测试,特别是删除数据库依赖项。
鉴于我在 VB.net、.NET 框架和单元测试方面的背景很薄弱,因此这项任务有些艰巨。无论如何,我想深入了解使用 SHIMS 来绕过这些内部类依赖项。我对 SHIMS 与更快、更容易实现的 STUBS 感兴趣的原因是,这个应用程序中没有接口(其他我相对不熟悉的东西。)并且接口是 STUB 所必需的。
现在,鉴于此背景,对于一个更具体的问题,我想帮助尝试对一个类进行单元测试,比如由“字符串名称”和类型“地址地址”组成的类 Person,并将这些用作构造函数参数。然后,我们可能会使用参数“string streetNumber”、“string street”和用户类型“state State”及其自己的参数构造地址类...
public class Person()
Private mName As String
Private mAddr As myclass.Address
Public Sub New(ByVal name As string, ByVal addr As Address)
mName = name
mAddr = addr
End Sub
还有其他地方……
public class Address()
Private mStreet As String
Private mState As myclass.State
Public Sub New(ByVal street As String, ByVal state As State)
mStreet = street
mState = state
End Sub
然后会有状态包含它包含的任何属性和方法......
所以,我想知道如何构建一个单元测试以将 Person 类与这些其他类(地址然后状态)隔离开来,这样如果它们处于开发或更改状态,Person 的单元测试仍然会通过.. 。 有什么建议么???
【问题讨论】:
-
Person 类已经通过 Constructor 的依赖注入与 Address 类解耦。如果 Address 的内部表示发生变化,Person 类不会改变。
标签: vb.net unit-testing microsoft-fakes