2012-06-27 36 views
1

我正在寻找一个例子测试静态类与类的实例时,说明困难。有人可以提供一个吗?实例困难时测试静态类(C#)

+0

好了,你怎么测试时间差的班级,如果它使用'日期时间.Now'? – Oded

+0

你可能要检查[这个答案](http://stackoverflow.com/a/10633109/343266)。 –

+0

搜索SO [右上方]用“静态[单元测试]”。你会发现很多发布的困难。具有纯函数的静态类不难测试 - 例如Math类的方法。另请阅读:http://stackoverflow.com/a/4222788/1695 – Gishu

回答

1

,使得使用其他类型的类被认为对那些其他类型的从属物。当你在一个类中测试一个方法时,你通常会尝试测试该方法在做什么,而不是依赖关系在做什么。设置你的对象,以支持这些场景的常用方法是使用dependency injection。 依赖注入是提高可测试性的通用模式。静态类不适用于该模式,因此难以对使用静态类的类进行单元测试。例如,如果您有要测试的类“A”,并且它使用静态类“B”来执行某些您不想测试的操作,例如点击数据库,则类A是现在很难测试。

class A 
{ 
    // this is hard to test because of the static call through B 
    public void MethodToTest() 
    { 
     // ... 
     B.HitTheDatabase(); 
     // ... 
    } 
} 

这种情况有解决办法,如写围绕B中的包装,并将其注入到A,或使用Moles框架