【问题标题】:Where should I put my testing code in relation to the code it is testing?我应该将我的测试代码与它正在测试的代码放在哪里?
【发布时间】:2009-12-10 17:43:13
【问题描述】:

我能想到的两个明显的地方是我正在处理的代码旁边的某种“测试”文件夹。所以像:

\project-code
    \my-feature
        \production-code
        \testing
            ***my tests***
    \co-workers-feature
        \production-code
        \testing

或者我可以将测试代码拆分为一个完全独立的层次结构。所以像:

\project-code
    \my-feature
    \co-workers-feature
\testing-project-code
    \my-feature
        ***my tests***
    \co-workers-feature

我看到很多框架都使用第二种方法,但最近我们一直将测试代码放在生产代码中,主要是为了方便。一种方法比另一种方法好得多,还是这里有最佳实践?

【问题讨论】:

    标签: testing testing-strategies


    【解决方案1】:

    把它们放在你最方便的地方。如果需要,您可以设置构建系统以将它们从最终产品中删除。测试是一种“最佳实践”。任何在不降低其有效性的情况下使测试更容易的事情都只是对最佳实践的改进。

    【讨论】:

      【解决方案2】:

      我使用第二个选项。这意味着如果需要,我可以在没有测试的情况下发布代码。同样通过查看类或包,我知道它的单元测试在哪里。

      这是一个相关的问题:

      Do you put unit tests in same project or another project?

      【讨论】:

        【解决方案3】:

        我更喜欢关闭单元测试。我已经看到选项 1 运作良好。对于一个小项目,这两种方法都可以正常工作,但是随着项目变得越来越大,当测试位于树的一个非常不同的部分时,很难找到和维护它们。如果它们很接近,那么在您更改产品代码时更改它们是很自然的。如果距离较远,则需要更多的精神努力,并且会被更多地忽略。这意味着它们不同步的可能性更大。

        请注意,要做到这一点,您需要一个允许对测试目录进行条件编译的 make 系统。您不想每次都构建它们。如果您无法做到这一点,则可能需要一棵单独的树。

        【讨论】:

          【解决方案4】:

          如果它是您控制的网站,那么将它们全部放在同一个文件夹中并没有什么坏处。如果它是您发布的经典软件,那么最好将其分开(如案例 2),这样您在发布时就不会意外导致任何膨胀。

          【讨论】:

            【解决方案5】:

            对我来说,第一个选项更有意义,尤其是从 SCM 的角度来看:生产代码和测试代码很好地保持同步(正如他们应该的那样),如果你标记或分支你的项目,你标记或分支同时生产和测试代码(应该如此)。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2010-10-23
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多