【问题标题】:Should I test inheritance and implementation?我应该测试继承和实现吗?
【发布时间】:2018-12-20 19:35:34
【问题描述】:

单元测试是否应该检查一个类是否使用反射实现了一个接口(与继承相同的问题)?如果不是,为什么?

如果移除了实现,代码仍然可以编译,并且测试可能仍然成功(这取决于代码的作用)。

【问题讨论】:

    标签: unit-testing inheritance implements


    【解决方案1】:

    单元测试应该测试任何可能不起作用的东西。如果编程语言不能确保类实现合约中的所有方法,那么您可能需要在测试中检查这一点。

    【讨论】:

      【解决方案2】:

      您应该测试什么对您的代码很重要。继承、接口之类的东西最好 实现细节应该隐藏在原始数据结果之外。

      也就是说,如果你的代码在没有继承的情况下通过,它可能不需要继承,它应该被清理为垃圾。

      【讨论】:

      • 假设项目是一个库,类A 和类B 都实现了一个特定的接口IAB 可以被客户端用作 I,直到有人决定 B 不再实现 I。如果没有特定的测试,代码仍然可以编译并且测试仍然可以通过。然后我猜单元测试应该检查这个。
      • 听起来好像有人并没有真正遵循良好的协议,而是依赖 I 作为抽象,而依赖 B 作为具体实现。您无法对此进行真正的测试,因为代码没有对B 的稳定性做出任何保证。
      【解决方案3】:

      在我的职业生涯中,有几次我写过这种单元测试,主要是为了测试约定。

      例如有一个隐含的假设,即所有单元测试都应该从 BaseTest 继承(尽管从技术上讲,如果没有这个,一切都可以正常工作,但为了连贯性,我们希望这样做),并且我们有一个单元测试可以完全执行这一点:)。

      所以是的,如果有必要,这很有意义。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-21
        • 1970-01-01
        • 2010-12-12
        • 1970-01-01
        • 2010-09-29
        • 2011-09-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多