如果你可以测试pre-commit和pre-push git hook,为什么要在持续集成中进行测试?

时间:2018-04-24 06:41:13

标签: continuous-integration travis-ci githooks git-husky

如果您已经拥有像Husky一样运行的系统,允许您在预提交和预推之前测试代码,那么使用Continuous Integration系统测试代码有什么意义?

4 个答案:

答案 0 :(得分:4)

预提交和预推钩非常适合快速操作和测试。有时您甚至可以在IDE中设置一个挂钩,每次保存文件时都会运行快速单元测试。但通常你有多个测试套件,不像单元测试功能,集成和性能测试通常需要更长的时间来运行,这对于钩子是不可行的。

此外,您希望在构建可交付产品的同一环境中运行测试,这通常不是您的本地计算机。

使用CI系统的另一个原因是运行合并后测试以验证多个并行合并没有引入任何问题。

总而言之,您运行的测试越多越好,CI系统允许您运行通常由某种拉取请求挂钩和合并后测试触发的预合并测试。所有这一切都在可控的可靠环境中进行。

答案 1 :(得分:1)

使用像Travis这样的持续集成平台测试的一个原因是确保开发人员不会绕过他们自己的本地开发环境测试git hooks。

答案 2 :(得分:1)

我对它是否通过您的本地环境并不感兴趣,您可能在环境路径上有一个不同版本的某个依赖库。我想知道,当我们附带的特定库版本链接时,任何人的贡献都不会破坏软件。

答案 3 :(得分:0)

CI不仅是测试,还有更多,但测试阶段当然是流程的一个非常重要的部分。
正如您在自己的回答中所说,本地环境可能会发生变化,CI上的测试可能会有更严格的设置,您测试的环境可能更像是最终用户使用的环境(例如,设置软件版本甚至硬件)。

比如说你开发了一个PHP包。该软件包支持php 5.6和7.2之间的所有内容,它还应该支持多种类型的操作系统,如果安装了data.,它们应该有不同的行为。本地测试套件很少有设置允许开发人员在每个所需平台上测试每个可能的版本,但是在CI管道中设置的测试套件可以。

老实说,为了安全起见,再次测试总是一个好主意! ;)