1

如果方法A()调用静态方法B(),这很糟糕,因为两者是紧密耦合的,对吗?

但是,如果不是调用,而是调用B()某个具体类A()的非静态方法C(),这对测试同样不利,对吗?因为现在A()耦合到拥有的具体类C()

唯一好的场景发生在使用接口(即依赖注入)并A()调用接口的方法时。

我说得对吗?静态方法不利于测试还有其他原因吗?

4

2 回答 2

2

第一种情况是“坏的”,因为它很难交换B()被调用的内容。

第二种情况可能并不那么“糟糕”,因为根据您如何获得拥有的类的实例C(),您可能能够将该对象交换为另一个对象(例如子类)。

A()第三种A()情况通常是“最好的”,因为它允许您更轻松地更改.

于 2011-05-16T04:48:24.490 回答
0

这取决于语言。例如,在像 Java 这样的语言中,在具体类上调用实例方法对于测试来说一点也不坏,因为可以生成该具体类的代理实例,从而可以有效地拦截调用(通常是模拟出来) . 事实上,许多框架使用这种代理工具在用户代码之前/之后注入自己的代码,以提供依赖注入和 AOP 支持等特性。

于 2011-05-16T04:48:54.873 回答