【问题标题】:Example of Difficulties when Testing Static Classes (C#)测试静态类时的困难示例 (C#)
【发布时间】:2012-06-27 18:39:38
【问题描述】:

我正在寻找一个示例来说明测试静态类与实例类时的困难。有人可以提供吗?

【问题讨论】:

  • 那么,如果一个类使用DateTime.Now,你如何测试它的时差?
  • 您可能需要检查this answer
  • 使用“静态 [单元测试]”搜索 SO [右上角]。你会发现很多张贴的困难。具有纯函数的静态类不难测试 - 例如Math 类的方法。另请阅读:stackoverflow.com/a/4222788/1695

标签: unit-testing c#-4.0 testability


【解决方案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 框架

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多