C# 持续集成总是与测试驱动的开发结合在一起?

C# 持续集成总是与测试驱动的开发结合在一起?,c#,continuous-integration,agile,C#,Continuous Integration,Agile,我参与了一个项目,我们使用持续集成服务器和NUnit进行单元测试和集成测试 前几天,一位客户问我们是否在编写代码之前编写测试。。。我们不是一直这样做的。特别是当存在复杂的技术问题时,我们希望首先测试以了解问题和可能的解决方案 我想知道,我们是否仍然可以将我们的开发过程视为遵循敏捷开发,对客户说出来,不要撒谎。只要您在小迭代中开发,就要专注于获得一个工作产品,而不是获取大量文档,并且客户持续参与项目,这是敏捷开发。单元测试、TDD和集成测试当然是好的和非常可取的实践,但它们不能决定您的项目是否敏捷

我参与了一个项目,我们使用持续集成服务器和NUnit进行单元测试和集成测试

前几天,一位客户问我们是否在编写代码之前编写测试。。。我们不是一直这样做的。特别是当存在复杂的技术问题时,我们希望首先测试以了解问题和可能的解决方案


我想知道,我们是否仍然可以将我们的开发过程视为遵循敏捷开发,对客户说出来,不要撒谎。

只要您在小迭代中开发,就要专注于获得一个工作产品,而不是获取大量文档,并且客户持续参与项目,这是敏捷开发。单元测试、TDD和集成测试当然是好的和非常可取的实践,但它们不能决定您的项目是否敏捷。

我认为您在这里把事情搞混了

测试驱动开发(TDD)并不一定意味着您正在使用敏捷方法。当然,这是我们许多敏捷用户使用的最佳实践,但TDD也可以用于瀑布式流程,取代/补充规范

持续集成本身意味着至少每天集成团队生成的代码。这不仅迫使团队中的每个成员必须不断地合并/签入,而且还确保您实际上可以发布每个构建。统一构建过程迫使您克服“在我的机器上工作综合症”。因为您可以每天发布一个版本,所以这支持一个敏捷过程,尽管严格意义上来说这不是绝对必要的


使用测试并将其集成到构建过程中,是一种通过自动化质量保证丰富构建过程的方法,并深化集成(完整性)的实际测试水平。

在没有自动化测试的情况下,CI仅验证源代码管理下的代码在修订之间是否保持在可编译状态,以及单步构建是否正常工作。虽然这是有用的,但它不如在两次修订之间自动验证代码的正确性那样有用

话虽如此,我宁愿在签入之间进行一些代码验证,也不愿没有。我宁愿有部分代码覆盖或一组不完整的功能测试,也不愿什么都没有。或者更糟