在C#.NET中测试静态类和方法

dan*_*mer 5 c# unit-testing dependency-injection

我对单元测试比较陌生,对C#也很陌生,但我一直在尝试使用静态方法测试使用静态类的代码,似乎我必须编写大量的样板代码才能进行测试,那么代码也可能需要进行测试.

例如:我正在使用System.Web.Security.Membership类,并ValidateUser在其上使用方法.好像我需要创建一个接口IMembership包含的方法ValidateUser,然后创建一个类MembershipWrapper实现IMembership,实现的方法ValidateUser和传递的参数在实际Membership的类.然后我需要在我的类上使用Membership引用包装器的属性,以便我可以在测试期间为模拟对象注入依赖项.

因此,为了测试使用的1行代码Membership,我必须创建一个接口和一个类,并向我的类添加属性和构造函数代码.这似乎是错的,所以我一定是弄错了.我该怎么做这个测试?我已经简要介绍了一些执行依赖注入的框架/库,但它们似乎仍然需要大量的样板,或者非常深入地了解引擎盖下的内容.

Ser*_*kiy 3

我不认为使系统松散耦合有什么问题。我相信您不会抱怨创建构造函数参数并将抽象依赖项传递给您的类。但是就地实例化依赖关系看起来容易得多,不是吗?

另外,正如我在评论中指出的那样,您可以稍后重用包装器。所以,这并不是乍一看那么无用的工作。