我应该避免静态方法,因为它很难测试吗?

时间:2012-04-13 10:44:15

标签: c# unit-testing legacy-code

我读过这本书Working effectivly with Legacy code

我理解在旧版代码中打破依赖关系的技术

但我想了解如何首次避免这些依赖:

1-关于静态方法:

我理解Introduce Instance Delegator

但这是否意味着我们应该完全避免使用静态方法?

(当它不仅仅是某段代码的宏时。

意味着它有一些真实的逻辑并且它的实例是独立的吗?)

2-全局变量

我理解Introduce Static Setter

但又一次 - 我们应该避开Singelton吗?

1 个答案:

答案 0 :(得分:0)

传统上对单元测试领域中静态方法的批评是嘲弄它们的难点。我从未同意这一点作为避免静态方法的原因(并且期待那些不同意的人,并非每个人都有使用IOC容器的奢侈品。)

有些工具可以模拟静态类,例如JustMock

另一个更肮脏的嘲弄单例的方法是让单例返回一个接口,并在使用私有访问或直接反射的单元测试期间模拟单例上的实例。