Unit testing 在git回购中包括测试框架?

Unit testing 在git回购中包括测试框架?,unit-testing,git,Unit Testing,Git,我正在慢慢地将git和单元测试作为常规工作流程的一部分。对于是否应该将单元测试框架(不是测试本身,而是实际的框架)包括在项目的git repo中,我非常感激 一方面,它似乎不应该这样做,因为框架a)在别处随时可用,b)不是项目独有的(我指的是流行的框架,如qunit for JS或PHP中的simpletest)。在这种情况下,也许在repo中提供一个简单的自述文件,指明框架的版本以及从何处获取就足够了 另一方面,测试是项目的一部分(也是回购协议的一部分),并且确实需要框架来运行,因此为了完整性

我正在慢慢地将git和单元测试作为常规工作流程的一部分。对于是否应该将单元测试框架(不是测试本身,而是实际的框架)包括在项目的git repo中,我非常感激

一方面,它似乎不应该这样做,因为框架a)在别处随时可用,b)不是项目独有的(我指的是流行的框架,如qunit for JS或PHP中的simpletest)。在这种情况下,也许在repo中提供一个简单的自述文件,指明框架的版本以及从何处获取就足够了

另一方面,测试是项目的一部分(也是回购协议的一部分),并且确实需要框架来运行,因此为了完整性,也许还应该包括框架


谢谢。

我会说不,因为它们在其他地方很容易找到,任何有经验的开发人员都应该已经有了这些库


此外,一些现代IDE(特别是eclipse)已经随您所需的单元测试库一起提供,因此随源代码一起提供这些库并不重要。

我几乎总是包括框架(一个合理的框架应该是一些库和可执行文件,所以没有那么大)-源代码和测试都有版本控制,如果我从2001年开始使用我的代码的1.2版,我希望在我进行热修复时运行测试——不要失败,因为我使用的是2006年改为的测试框架

如果没有源代码管理中的测试框架,我还要添加一件事来匹配的版本。见鬼,如果可行的话,我也会把编译器和语言库的版本放在那里


如果你有一个巨大的测试工具/平台,不能很容易地放在一起(或者不能合法地放在一起),请确保你包括一个某种文档,告诉你什么工具,什么版本,以及可能如何在测试中获得它。

有趣的问题。不过,我不认为测试框架应该包含在应用程序存储库中


在自述文件中命名项目的先决条件。如果您有多个使用相同测试框架的项目,那么您已经安装了该框架,并且您可能不想为每个项目再次下载或安装它。

我将NUnit DLL包括在我所有的单元测试存储库中。实际上,我在存储库中包含了编译和运行测试所需的所有内容。当然,这对于某些项目来说是不可行的,但是当它可行时,检查存储库并开始工作就变得非常容易了。不需要设置。

不,您不应该在回购协议中包含外部框架,除非您实际修改框架以与您的项目配合使用


根据您使用的语言,您可能希望使用自述文件或依赖于您的打包工具;例如,Python的distutils和Perl的Module::Build都允许指定运行测试所需的外部模块,并将为用户安装依赖项。

我们将所有引用的库添加到存储库中

这样做的好处是,您可以将所有必需的组件放在一个位置。如果您有一台新计算机,只需安装您选择的IDE,签出存储库,就可以了


这也使得在构建服务器上加速构建过程变得很容易,因为您只需将它指向您的存储库,其中包含构建所需的一切(尽管有.NET framework)。因此,创建旧版本的构建很容易,没有任何版本问题。

在Python世界中,我会将依赖项包含在我的
setup.py
文件中。开发人员可以在那时获取它们

对于柏油球,我有时会包括
这样人们至少可以在运行项目之前做一些健全性测试

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


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

VCS和分发/打包之间的区别很有趣,我以前没有真正听说过。我认为这种区别抓住了我一直在努力解决的模糊性,所以我把这个标记为答案,尽管我认为许多其他答案也是好的。