单元测试类是不是应该与其余代码一起受版本控制?

Posted

技术标签:

【中文标题】单元测试类是不是应该与其余代码一起受版本控制?【英文标题】:Should unit test classes be kept under version control with the rest of the code?单元测试类是否应该与其余代码一起受版本控制? 【发布时间】:2010-09-12 00:31:39 【问题描述】:

如果我为开发项目创建测试套件,这些类是否应与项目代码的其余部分一起受版本控制?

【问题讨论】:

【参考方案1】:

是的,没有理由不将它们置于源代码管理中。如果测试发生变化怎么办?如果接口发生变化,需要更改测试怎么办?

【讨论】:

理想情况下,您更改测试以证明您的更改(并失败),然后更改您的代码以通过测试。一旦测试再次通过,将其全部检查回源代码控制。那是测试驱动的开发。【参考方案2】:

是的,您将生产代码放入源代码控制的所有相同原因仍然适用于您编写的任何单元测试。

这是经典的谁、何地和为什么问题:

谁更改了代码? 他们什么时候改的? 他们为了什么改变它?

这些问题与测试代码和生产代码一样重要。您绝对应该将您的单元测试代码放入存储库中。

【讨论】:

【参考方案3】:

当然。测试类必须与代码保持同步。这意味着将其签入并在持续集成下运行测试。

【讨论】:

【参考方案4】:

绝对!测试类是源代码,应该像任何其他源代码一样进行管理。您将需要修改它们并跟踪版本,并且您想知道维护历史记录。

您还应该将测试数据置于源代码控制之下,除非它非常大。

【讨论】:

【参考方案5】:

单元测试应绑定到您的存储库中的代码库。

除了必须为以前的版本生成维护版本之外,没有其他原因,您可以保证,根据您的单元测试指标,您的代码不会比以前差(希望现在更好) .

【讨论】:

【参考方案6】:

确实是的。怎么会有人不这样想?

如果您使用代码分支,您应该尝试让您的测试代码自然地适合主代码行,这样当您分支时,测试的正确版本也会分支。

【讨论】:

【参考方案7】:

是的,他们应该这样做。检查最新版本的人应该能够在他们的机器上对代码进行单元测试。这将有助于识别缺失的依赖项,还可以为他们提供有关代码如何工作的非官方文档。

【讨论】:

【参考方案8】:

是的。

测试代码是一个代码。它应该被维护、重构和版本化。它是您系统源代码的一部分。

【讨论】:

【参考方案9】:

当然,他们应该被视为代码库的一等公民。他们需要所有的爱和关怀,即维护,就像任何一段代码一样。

【讨论】:

【参考方案10】:

是的,他们应该这样做。每当您进行代码更改时,您都应该检查测试并运行它们。如果你把它们放在其他地方,运行它们就麻烦多了。

【讨论】:

【参考方案11】:

是的。由于这里提到的所有其他原因,再加上随着功能的变化,您的测试套件也会发生变化,并且应该很容易为任何给定的版本、分支等获得正确的测试套件,并且不仅可以进行测试在版本控制中,但与您的代码相同的存储库是实现这一目标的方法。

【讨论】:

【参考方案12】:

是的,出于上述所有原因,如果您使用的是“监视”源代码控制的持续集成服务器,您可以让它在每次提交时运行最新的单元测试。

这意味着由于单元测试失败以及代码未编译导致构建损坏。

【讨论】:

【参考方案13】:

当然。您可能会发现,随着代码的更改,您的测试也可能需要更改,因此您可能希望记录这些更改,尤其是在测试或代码突然停止工作的情况下。 ;-)

此外,单元测试用例应尽可能接近它们正在测试的实际代码(同一文件的底部似乎是标准)。既方便又便于维护。

更多关于什么是好的单元测试的信息,请查看this *** post。

【讨论】:

以上是关于单元测试类是不是应该与其余代码一起受版本控制?的主要内容,如果未能解决你的问题,请参考以下文章

JUnit简介与初步使用

私有/受保护的方法是不是应该进行单元测试? [关闭]

具有剩余模板的控制器类的单元测试

Git Flow 应该如何与 QA 一起测试版本和新功能?

如何在单元测试中重新加载模型类

版本控制如何与 Flex 远程对象和 AMF 一起使用?