代码之家  ›  专栏  ›  技术社区  ›  Bialecki

我应该把我的测试代码和它正在测试的代码放在哪里?

  •  3
  • Bialecki  · 技术社区  · 15 年前

    我能想到的两个明显的地方就是我正在处理的代码旁边的“测试”文件夹。比如:

    \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
    

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

    5 回复  |  直到 15 年前
        1
  •  1
  •   Community dbr    7 年前

    我使用第二个选项。这意味着如果需要的话,我可以在不进行测试的情况下发送代码。另外,通过查看类或包,我知道单元测试的位置。

    这是一个相关的问题:

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

        2
  •  2
  •   Christopher Bottoms zerkms    15 年前

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

        3
  •  1
  •   Steve Rowe    15 年前

    我更喜欢关闭单元测试。我已经看到选项1工作得很好。对于一个小的项目,这两种方法都可以很好地工作,但是随着项目越来越大,当它们生活在树的一个非常不同的部分时,很难找到和维护测试。如果它们很接近,那么在您更改产品代码时更改它们是自然的。如果他们离得很远,就需要更多的脑力劳动,而且会被更多的忽视。这意味着它们失去同步的可能性更大。

    注意,要做到这一点,您需要一个make系统,它允许有条件地编译测试目录。你不想每次都建造它们。如果你得不到,可能需要一棵单独的树。

        4
  •  0
  •   Pete Duncanson    15 年前

    如果它是一个你控制的网站,那么把它都放在同一个文件夹中并不有害。如果您发布的是经典的软件,那么最好将其与案例2分开,这样您在发布时就不会意外地导致任何膨胀。

        5
  •  0
  •   Pascal Thivent    15 年前

    对我来说,第一个选项更有意义,特别是从SCM的角度来看:生产代码和测试代码很好地保持同步(它们应该保持同步),并且,如果您标记或分支项目,您可以同时标记或分支生产代码和测试代码(它们应该保持同步)。