TDD需要基础设施?

dfe*_*aro 7 tdd continuous-integration build-process

我对单元测试和TDD"相对较新".最近才完成我的第一个生产应用程序(至少在理论上)100%的代码覆盖率.我已经在以前的项目中进行了单元测试一段时间,但是没有真正的TDD方式和良好的代码覆盖率.它一直是一种思想.我觉得我现在对它有很好的把握.

我也正在努力培训团队的其他成员进行TDD和单元测试,以便我们能够在所有应用程序中进行单元测试,并开始向前发展,最终进展到完全TDD w /自动构建和连续积分.我在这里发布了一个关于我的攻击计划/培训议程的评论和批评.

其中一个回复(事实上是最高投票)建议我在进行培训之前首先设置基础设施.不幸的是,我没有接触到这一点,谷歌搜索主题是困难的,因为CruiseControl.NET/nAnt/etc的页面并没有真正解释为什么我们应该设置它以及'如何'一切连接到geather.

我们是一个小商店(大约10个开发人员),几乎只使用微软技术,并在VB.NET中进行开发.我们期待最终开始使用C#,但那是另一次.我一直在使用VS2008附带的MSTest项目进行单元测试,我一直在使用Visual Studio构建我的应用程序,并使用MSI安装项目进行部署......我们(不幸的是)也使用VSS进行我们的控制 - 但这也是在砧板上,我真的想摆脱它并使用颠覆.

我知道我需要使用CruiseControl.NET for CI,以及nAnt或MSBuild来构建应用程序.我可能需要一个构建服务器来运行所有这些构建.但我找不到任何"连接"点并解释它们如何与彼此交互,构建服务器上应该是什么,何时应该使用构建服务器构建(仅用于部署构建,或者甚至是只是想在您的本地环境中进行一些小改动之后编译您正在开发的应用程序?).我也计划削减MSTest,因为我发现它是有缺陷的并且将使用nUnit.

任何人都可以说明我从"知道如何做TDD"到"建立适当的基础设施以便整个团队能够做到并努力工作"这个差距吗?我确实理解了持续集成是什么,但同样,我不确定应该如何设置构建服务器以及它如何与所有内容连接,以及为什么我们需要一个(例如管理层).

非常感谢你花时间陪伴.

我需要什么部分的终结者?似乎与最终的建造者和团队城市有一些重叠.Finalbuilder服务器似乎是一个CI服务器,所以我猜我不需要它.FinalBuilder似乎是一个构建服务器 - 但我认为TeamCity也是一个构建服务器......而Automise似乎是一个可视化的Windows自动化工具,就像winforms应用程序的某种开发平台一样......

_I在Team City支持的应用程序图中也没有看到对最终构建器的支持:_

Dro*_*per 5

看看我几周前做过的网络研讨会 - 如何成功开始单元测试.在那次网络研讨会中,我谈到了工具和单元测试最佳实践,它的目标对象是想要在组织中引入单元测试的开发人员.

您希望实施CI(持续集成)流程的第一个业务顺序,为此您需要三个工具:

  1. 来源控制
  2. 构建服务器
  3. 构建客户端/脚本

我希望你已经有了某种形式的源代码控制,所以让我们谈谈另外两个.

构建服务器 - 检查源代码控制以及何时更改(或某些其他条件满足)在某个客户端(或同一台机器)上运行构建脚本有几个构建服务器可用我推荐JetBrain的TeamCity它易于安装和使用(很棒的Web界面)并且最多可供20位开发人员使用(就是你).

构建脚本 - 在构建客户端上,您希望运行构建脚本来构建解决方案并运行单元测试.TeamCity有一些基本的构建和测试功能,但是对于更高级的选项(构建安装程序,文档等),你需要一些脚本运行器,我们使用FinalBuilder - 它不是免费的,但有非常好的编辑器.如果您正在寻找一个免费的替代方案,请查看ANTNANT - 但是要准备好编辑大量的XML.

其他工具 - 因为成功单元测试的一个重要部分是在开发人员的机器上编写和运行测试是多么容易,我建议你检查是否有更好的IDE或外部工具来帮助开发人员编写和运行他们的单元测试.