Unit testing 在CI中运行单元测试的最佳最长时间的最佳实践

Unit testing 在CI中运行单元测试的最佳最长时间的最佳实践,unit-testing,continuous-integration,Unit Testing,Continuous Integration,我们正在公司与TeamCity进行持续集成,我们在每一个提交1分钟的窗口运行单元测试 最近,我们在争论一批单元测试应该持续多长时间,但越短越好 但是,我想知道对于一批单元测试的长度来说,什么是最佳实践?单元测试应该一直运行到它们全部完成;不要基于运行时限制单元测试集。如果您有大量的单元测试,并且它们需要很长时间才能运行,那么可以研究使用更快的硬件来运行CI系统;购买更昂贵的硬件要比不进行单元测试便宜得多,因为单元测试可以在问题成为主要bug之前检测到问题。单元测试应该一直运行到全部完成;不要基于

我们正在公司与TeamCity进行持续集成,我们在每一个提交1分钟的窗口运行单元测试

最近,我们在争论一批单元测试应该持续多长时间,但越短越好


但是,我想知道对于一批单元测试的长度来说,什么是最佳实践?

单元测试应该一直运行到它们全部完成;不要基于运行时限制单元测试集。如果您有大量的单元测试,并且它们需要很长时间才能运行,那么可以研究使用更快的硬件来运行CI系统;购买更昂贵的硬件要比不进行单元测试便宜得多,因为单元测试可以在问题成为主要bug之前检测到问题。

单元测试应该一直运行到全部完成;不要基于运行时限制单元测试集。如果您有大量的单元测试,并且它们需要很长时间才能运行,那么可以研究使用更快的硬件来运行CI系统;购买更昂贵的硬件要比不进行单元测试便宜得多,单元测试可以在问题成为主要bug之前检测到问题。

尽可能简短

但实际上,这完全取决于你的要求。是否应该删除测试以缩短构建?可能不会。您是否可以限制在每次提交生成上运行的测试的范围?也许是这样。您应该限制在夜间构建上运行的测试吗?可能不会。构建所需的准确时间取决于您的团队、流程以及如何将CI集成到其中。

尽可能简短


但实际上,这完全取决于你的要求。是否应该删除测试以缩短构建?可能不会。您是否可以限制在每次提交生成上运行的测试的范围?也许是这样。您应该限制在夜间构建上运行的测试吗?可能不会。构建所需的准确时间取决于您的团队、流程以及如何将CI集成到其中。

您可以将优先级构建到单元测试中,并且只使用子集作为签入门构建验证测试,或者。较少地运行优先级较低的测试,例如,每次每日构建、每次测试通过或每次产品发布。然后对满足您的开发团队的每个或每个套件设置单独的执行时间限制

我的优先级取决于我们修复测试失败发出的错误的速度。P0意味着必须修正,即使我们不得不打滑时间表,P3意味着可能永远无法修正


我工作过的一个团队说BVT的每个特性不超过2分钟,并且对低优先级测试没有时间限制。开发人员必须运行大约5个测试套件,并且我们的签入量合理地将10分钟的buddy Build排队。但是我们的单元测试很大,特殊的环境需要集成测试,所以YMMV。

您可以将优先级构建到单元测试中,并且只使用子集作为签入门构建验证测试,或者。较少地运行优先级较低的测试,例如,每次每日构建、每次测试通过或每次产品发布。然后对满足您的开发团队的每个或每个套件设置单独的执行时间限制

我的优先级取决于我们修复测试失败发出的错误的速度。P0意味着必须修正,即使我们不得不打滑时间表,P3意味着可能永远无法修正


我工作过的一个团队说BVT的每个特性不超过2分钟,并且对低优先级测试没有时间限制。开发人员必须运行大约5个测试套件,并且我们的签入量合理地将10分钟的buddy Build排队。但是我们的单元测试很大,特殊的环境需要集成测试,所以YMMV。

非常简单使单元测试更快或并行化…单元测试应该工作…你不应该通过运行时限制它们…

非常简单使单元测试更快或并行化…单元测试应该工作…你不应该通过运行时限制它们…

请原谅我的无知,但什么是BVT?@Stecy:构建验证测试。我认为是Microsoft ese=P编辑了我的答案,提供了一个带有一点信息的链接。@Stecy:还要注意,我们将它们作为签入门运行,而不是每日生成验收门,尽管这可能是大多数人的意思。请原谅我的无知,什么是BVT?@Stecy:build Verification Test。我认为是Microsoft ese=P编辑我的答案来提供一个带有一点信息的链接。@Stecy:还要注意,我们将它们作为签入门而不是每日生成验收门来运行,尽管这可能是大多数人的意思。在持续集成环境中,让单元测试尽可能快地运行是很重要的。其他测试(如集成/功能测试)速度较慢。@Stecy:因此CI系统上的硬件速度较快。在连续集成环境中,让单元测试尽可能快地运行是很重要的。其他测试,如集成/功能测试,速度较慢。@Stecy:因此fas t CI系统上的硬件。