关于测试:测试是在代码旁边的树中,还是在单独的测试树中?

Do tests belong in-tree alongside the code, or in a serarate test-tree?

在设计一个新的测试系统时,我是否应该将测试与源代码一起保存在树中,例如,在应用程序根目录的测试子目录中。因此,仅针对该分支运行代码的给定分支的测试。

我应该为测试保留一个单独的源代码树,并针对项目的所有分支运行最新的测试吗?


我们的团队以及我工作的大多数团队将单元测试与代码放在同一棵树中,但将其余测试(也就是测试团队编写的测试)放在单独的树中。在组织上,测试树反映了代码树(即目录结构是相同的(大部分))。

但是我们写了很多测试代码。


我是双向的。这取决于:

  • 如果被测系统以二进制形式分发,我将测试放在代码旁边。我更喜欢这个,因为它可以更容易地在测试和源代码之间切换。它还增加了测试对其他开发人员的可见性,尤其是那些尚未编写自己的测试的开发人员。
  • 但是,如果被测系统作为源代码分发,我将测试保存在并行树中,以便人们可以选择只获取工作系统。

我认为将它们与源代码一起保存会更好。通常情况下,给定代码的预期行为会发生变化,然后测试也会发生变化。此外,当您添加功能时,您将获得在旧代码上会失败的新测试。

也就是说,将测试放在源存储库的单独目录中是很有意义的,因此您可以在发布时轻松摆脱它们。但无论如何,它们都应该与它们正在测试的代码一起进行版本控制。