testing - 具体实例方法和静态测试方法一样糟糕,对吧?

标签 testing methods static instance concrete

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

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

唯一好的情况是使用接口(interface)(即依赖注入(inject)),并且 A() 调用接口(interface)的方法。

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

最佳答案

第一种情况“不好”,因为它很难交换正在调用的 B()

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

第三种情况通常是“最好的”,因为它允许您更轻松地更改 A() 的实现,但这只有在没有提供具体类的硬编码构造的情况下才是正确的A()(即只有在实际使用依赖注入(inject)时才为真)。

关于testing - 具体实例方法和静态测试方法一样糟糕,对吧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6013223/

相关文章:

angularjs - 配置字段中的颜色和 logColors 有什么区别

java - 当 ArrayList 位于对象内部时访问 ArrayList 方法

ios - 切换 View 后, View 中仍然调用方法吗?

static - iOS 7 静态表格 View 选择样式错误

cocoa - 如何在 Cocoa 中进行静态初始化

ios - 数据访问器对象单例或其他模式? ( objective-c )

node.js - 测试失败后不运行 Jest globalTeardown

c++ - "static const int"导致链接错误( undefined reference )

java - 是否可以在 Eclipse 中从多个包运行 JUnit 测试?

python - 在同一类的另一个方法中使用 __init__ 中的变量