单元测试类是否应该与其余代码一起保留在版本控制下?
如果我为开发项目创建测试套件,那么这些类是否应与其余项目代码一起保留在版本控制下?
解决方案
是的,没有理由不将其置于源代码管理中。如果测试改变了怎么办?如果接口改变了,必须改变测试怎么办?
绝对地。测试类必须与代码保持最新。这意味着要对其进行检入并在持续集成下运行测试。
是的,他们应该。签出最新版本的人员应该能够在其计算机上对代码进行单元测试。这将有助于识别缺少的依赖项,还可以为他们提供有关代码工作方式的非正式文件。
是的。
测试代码是一个代码。应该对其进行维护,重构和版本控制。它是系统源代码的一部分。
是的,将生产代码放入源代码管理的所有相同原因仍然适用于我们编写的任何单元测试。
这是经典的人物,地点和原因:
- 谁更改了代码?
- 他们什么时候改变的?
- 他们做了什么改变?
这些问题与测试代码和生产代码一样重要。我们绝对应该将单元测试代码放入存储库中。
绝对,他们应该被视为我们代码库的一等公民。他们将需要所有的爱护和维护,就像任何代码一样。
是的,他们应该。每当更改代码时,我们都应该签出测试并运行它们。如果将它们放在其他位置,则要运行它们会遇到更多麻烦。
绝对地!测试类是源代码,应该像其他任何源代码一样进行管理。我们将需要修改它们并跟踪版本,并且我们想了解维护历史记录。
除非测试数据很大,否则还应将其保持在源代码控制之下。
是的。由于这里提到的所有其他原因,加上随着功能的改变,测试套件也会随之改变,因此对于任何给定的发行版,分支等,都应该容易地获得正确的测试套件,并且不仅要进行测试在版本控制中,但是与代码相同的存储库是实现此目标的方法。
绝对地。我们可能会发现,随着代码更改,测试可能也需要更改,因此我们可能希望记录这些更改,尤其是在测试或者代码突然停止工作的情况下。 ;-)
另外,单元测试用例应尽可能地靠近它们正在测试的实际代码(同一文件的底部似乎是标准的)。它既方便又维护。
有关如何进行良好的单元测试的更多信息,请查看此stackoverflow文章。
单元测试应与存储库中的代码库绑定。
除了必须为以前的版本制作维护版本外,没有其他原因,可以保证通过单元测试的指标,代码不会比以前更糟(并且希望现在更好)。
是,基于上述所有原因,如果我们正在使用"监视"源代码控制的连续集成服务器,则可以让它在每次提交时运行最新的单元测试。
这意味着单元测试失败以及代码未编译会导致构建失败。
完全同意。有人会怎么想呢?
如果使用代码分支,则应尝试使测试代码自然地适合主代码行,因此在分支时,正确版本的测试也将分支。