unit-testing - 每晚构建与持续集成 : Long-Running Automated

我们有一个大型自动化集成测试套件的“问题”。虽然我们的构建时间是合理的(

虽然在我们的构建运行中测试这么大的功能 block 很棒,但这显然是实现 CI 的障碍,我发现这对于将源代码树保持在“始终可构建”状态非常有帮助。

我查看过 this one 等讨论主题,其中详细说明了区别。

这引出了几个问题:

  1. CI 是否规定或推荐单元与集成测试自动化?我过去曾听说过 Unit-only,但在快速搜索中没有找到任何此类陈述(或理由)。

  2. 对于组合构建 + 自动化测试时间/比率来为团队提供有效 CI 的“最佳实践”是什么?我的直觉告诉我,最坏的情况应该是

  3. 从长期运行的夜间构建 + 集成测试到 CI 的最佳前进方式是什么?我正在考虑一个仅包含一些骨架单元测试的 CI 构建,以及继续进行集成测试的夜间构建。

也欢迎任何工具建议(仅限 Windows 的 C#/C++ 代码库)

最佳答案

For most projects, however, the XP guideline of a ten minute build is perfectly within reason. Most of our modern projects achieve this. It's worth putting in concentrated effort to make it happen, because every minute you reduce off the build time is a minute saved for each developer every time they commit. Since CI demands frequent commits, this adds up to a lot of time.

Source: http://martinfowler.com/articles/continuousIntegration.html#KeepTheBuildFast

为什么需要 6 个小时?你有多少测试?单元测试与集成测试的比例是多少?您可能有更多的集成测试,或者您的单元测试不是真正的单元。您的单元测试是否涉及数据库?这可能是问题所在。

6 小时是一个很长的时间。上面的文章有一些提示。

关于unit-testing - 每晚构建与持续集成 : Long-Running Automated Tests,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4899681/

相关文章:

build - 何时使用门控值机?

c++ - 在 Visual Studio 中运行小型 C++ 程序而不创建项目

javascript - 如何在 Grunt 目标之间共享文件?

process - 为什么要自动化构建?

eclipse - 用ant构建eclipse项目

java - Android Gradle 将外部库和嵌套的外部库添加到项目中

java - Gradle:如何使用并排项目配置多项目设置

powershell - 如何显示 Visual Studio Online 构建任务 Write-

node.js - Nodejs npm 步骤在 TeamCity 的每个构建中下载包

jenkins - 有没有办法在声明性 Jenkins 管道中运行预结帐步骤?