我正在努力调和以下要求。
为每次提交/推送生成构建(我理解CI系统的默认行为)
处理大型项目,需要时间才能完成,直到完成导致测试失败。
经常推动备份我的作品
希望通过最小化失败的构建来保持构建的健康。
有没有办法让我的蛋糕吃掉?
答案 0 :(得分:1)
主要问题似乎是长期运行的测试。一种方法是仅对每个构建(单元测试,组件测试)运行某些测试,并将更长时间运行的测试延迟到每晚构建(性能测试,系统测试)。
答案 1 :(得分:1)
我不确定你的意思
- 处理可阻止测试在开发过程中长时间通过的大型项目
醇>
也许你的意思是测试运行了很长时间,就像C-Otto读的那样。在这种情况下,他的建议或多或少是正确的;单元测试应该是快速运行的,如果你的单元测试没有表明测试设计有问题。有更长时间运行的测试是合理的(有时人们将这些测试归结为"集成测试"),但不是单元测试,更重要的是,你不会在每个构建上运行这些测试。
但是当我读到这一点时,我认为你的意思是,你有一段时间的开发,在此期间你的一些测试失败了。
嗯,无论哪种方式,根据大多数关于开发方法/最佳实践的现代思想,这个要求2都是问题。当测试没有通过时,不应该延长期限。 (事实上,你不应该推送无法通过的代码;有些人甚至会说#34;不应该提交#34;这样的代码。)
这有很多原因,其中你在问题中阐述的困境是一个。当然,你可能会坚持认为你喜欢一种开发方法,在这种方法中你根本无法让你的测试处于过时状态,我当然不能强迫你改变它;我也不会否认这是一项重大任务。但是,如果你不采取让你保持建筑清洁的做法,那么你将无法获得CI的好处(特别是连续测试)。
我建议阅读像红绿重构这样的开发实践。这是一种高度迭代的,测试驱动的方法。 (请不要被术语"测试驱动"吓跑;测试驱动肯定会被那些学习错误模型的人讨厌,但是如果正确完成则非常有效。)