TDD需要基础设施?

时间:2009-12-14 18:31:15

标签: tdd build-process continuous-integration

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

我也正在努力培训团队的其他成员进行TDD和单元测试,以便我们能够在所有应用程序中进行单元测试,并开始向前发展,并最终进展到完全TDD w /自动化构建和持续整合。我发布了a thread here关于我的攻击计划/培训议程的评论&的批评。

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

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

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

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

非常感谢你的时间。

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

_我也看不到The Team City Supported Apps Diagram中对最终构建者的支持:_

1 个答案:

答案 0 :(得分:5)

看看几周前我做过的网络研讨会 - How To Start Unit Testing Successfully。在该网络研讨会中,我讨论了工具和单元测试最佳实践,它针对的是像您一样希望在组织中引入单元测试的开发人员。

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

  1. 来源控制
  2. 构建服务器
  3. 构建客户端/脚本
  4. 我希望你已经有了某种形式的源代码控制,所以让我们谈谈另外两种。

    构建服务器 - 检查源代码控制以及何时更改(或某些其他条件满足)在某个客户端(或同一台机器)上运行构建脚本,有几个构建服务器可用我建议使用JetBrain { {3}}它易于安装和使用(出色的网络界面),最多可供20位开发人员使用(就是你)。

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

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