【问题标题】:Is it required to test public inner classes?是否需要测试公共内部类?
【发布时间】:2012-01-12 09:41:45
【问题描述】:

我应该测试公共内部类公共方法吗?或者我应该测试使用内部类的外部类公共方法(与测试私有方法相同的方法)?

【问题讨论】:

  • 你必须测试你写的每一个方法(不管是在内部还是外部)。
  • 您应该特别测试外部类尚未测试的任何方法/功能。
  • @精英绅士——绝对不是。一两行长并且没有分支或循环逻辑的测试方法是没有意义的。当唯一的调用方法已经测试时,测试私有方法是没有意义的。
  • “你必须测试你写的每一个方法”甚至私有方法?
  • @David Wallace,我指的是功能测试。无论该方法是私有/公共/受保护的,您都需要测试用例来证明这些方法符合功能和业务需求。即使你测试你的公共方法(调用你的私有方法),你仍然需要测试私有方法来确定你的公共方法是否通过/失败。

标签: java unit-testing junit


【解决方案1】:

您需要测试可以从课堂外访问的所有内容。这包括内部类的公共方法(无论类本身是公共的还是私有的)。

如果您要公开一个方法,则需要对其进行测试。

【讨论】:

    【解决方案2】:

    如果外部类方法只是将调用委托给内部类方法,您可以只测试其中之一。哪一个并不重要。在这种情况下,您可能需要重新考虑您的设计 - 根据我的经验,过多的委托意味着糟糕的设计。

    如果外部类方法除了调用内部类方法之外还做了其他重要的事情,那么你应该像这样分别测试它们:

    • 只测试内部类方法
    • 仅使用模拟的内部类方法测试外部类方法(如果可能)
    • 测试外部类方法

    【讨论】:

      【解决方案3】:

      没有什么是“必需的”。您需要进行合理的测试,但要关注功能测试,而不是行覆盖:您的代码所做的一切都应该以一种或另一种方式进行测试。

      如果您的内部类方法中有任何业务逻辑,那么它可能有助于直接测试这些方法(并将内部转换为顶级类)。根据它的作用,测试外部可能就足够了,如果你这样做,你会在你的测试覆盖中引入耦合,但是由于类是一个内部类,所以无论如何耦合已经存在了。

      【讨论】:

        【解决方案4】:

        您应该测试您的类是否满足其所有要求,无论这些要求是如何实现的。不要为每种方法编写测试;相反,根据已实现的需求以及每个需求是否涵盖不同的案例来确定您需要哪些测试。您是否编写了内部类、私有方法等与测试过程无关。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-04-22
          • 1970-01-01
          • 2010-10-25
          • 1970-01-01
          相关资源
          最近更新 更多