应该避免使用静态类,因为它会使依赖注入困难吗?

Ryu*_*Ryu 8 c# dependency-injection mocking testability

负责创建"核心"库集的人创建了一组静态类,提供来自日志记录,审计和常见数据库访问方法的各种实用程序.

我个人认为这很臭,因为我们现在有一组很难测试的Core库,因为我不能模拟/存根这些类或者对它们的构造函数进行任何注入.

我想我可以使用TypeMock将它们存在,但我宁愿免费使用它.

你怎么看?

编辑

如果你不认为他们很难测试,你可以给出一个如何测试它们的例子.这些静态类实例化其他类型以执行其功能.

tan*_*ius 8

只要没有隐藏的依赖项,就不一定要避免使用静态类(方法).当然,您可以将依赖项传递给静态方法 - 它不应该在内部存储并修改以后调用的行为.
在这种情况下测试它们应该没有问题.

但是我对你提到的案例也有不好的看法.我知道其中一些静态"包装"实用程序类 - 在大多数情况下它们真的很臭:)

编辑:
也许我应该澄清.我会将静态类/方法仅用于非常小的区分任务.当静态类开始初始化依赖项时,它们当然应该避免.如果你无法测试这些静态类,那么他们已经做了太大的工作.

这个问题第一个答案是你提到的反对静态类的参数.