在git repo中包含测试框架?

Phi*_*ger 8 git unit-testing

我正在慢慢地对我的常规工作流程进行git和单元测试.我很欣赏有关单元测试框架(不是测试本身,而是实际框架)是否应该包含在项目的git repo中的建议.

一方面,它似乎不应该,因为框架a)在其他地方很容易获得,并且b)不是项目独有的(我在谈论流行的框架,例如JS的qunit或PHP中的simpletest).在这种情况下,也许在repo中的一个简单的自述文件指示框架的版本以及从何处获取它就足够了.

另一方面,测试是项目的一部分(和repo的一部分),并且确实需要框架运行,所以为了完整起见,也许框架也应该被包含在内?

谢谢.

Wil*_*ell 2

阅读这个问题的答案很有趣,因为它显示了对软件开发的许多不同方面的非常广泛的解释。我通常认为任何类型的依赖项都不应该存储在 VCS 中(对于 VCS,我指的是 git、hg、svn、cvs 等工具,而不是包含此类工具的大型系统,如 Xcode),因为这是不是 VCS 的工作。依赖性跟踪最好留给打包工具。(似乎很多人使用 VCS 作为原始打包工具,恕我直言,这是一个巨大的错误。)

我认为您需要澄清“测试框架”的含义。对我来说,我的大部分测试套件都是由 automake 提供的框架调用的。我当然不会在我的 git 存储库中包含 automake,但是将来不会出现版本差异的问题,因为 automake 生成的所有测试框架都包含在发行版 tarball 中。所以实际上这个问题又被推后了一层。如果您仅使用 VCS 来跟踪您的版本,那么您就会遇到问题,因为当您签出项目的旧版本时,您确实需要可用的测试框架。如果 VCS 是检索旧版本的唯一存储机制(即,您没有在 tarball 中使用任何类型的版本归档),那么您似乎被迫将框架放入 VCS 中。但坦率地说,将外部软件放入 VCS 中是愚蠢的。这样做的唯一原因是您使用 VCS 作为分发工具。所以我想我的答案是:不要将框架放入您的 VCS 中,而是将框架放入您的发行版中。如果您的 VCS 是您的分发工具,那么就没有正确的方法来处理测试框架。