TDD需要基础设施?

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

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

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

我们是一个小商店(大约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在The Team City Supported Apps Diagram中也没有看到对最终构建器的支持:_

看看我几周前做过的网络研讨会 – How To Start Unit Testing Successfully.在网络研讨会上,我谈到了工具和单元测试最佳实践,它针对的是像你一样的开发人员想要在他们的组织中引入单元测试.

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

>源代码控制
>构建服务器
>构建客户端/脚本

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


什么是设计模式一套被反复使用、多数人知晓的、经过分类编目的、代码 设计经验 的总结;使用设计模式是为了 可重用 代码、让代码 更容易 被他人理解、保证代码 可靠性;设计模式使代码编制  真正工程化;设计模式使软件工程的 基石脉络, 如同大厦的结构一样;并不直接用来完成代码的编写,而是 描述 在各种不同情况下,要怎么解决问题的一种方案;能使不稳定依赖于相对稳定、具体依赖于相对抽象,避免引
单一职责原则定义(Single Responsibility Principle,SRP)一个对象应该只包含 单一的职责,并且该职责被完整地封装在一个类中。Every  Object should have  a single responsibility, and that responsibility should be entirely encapsulated by t
动态代理和CGLib代理分不清吗,看看这篇文章,写的非常好,强烈推荐。原文截图*************************************************************************************************************************原文文本************
适配器模式将一个类的接口转换成客户期望的另一个接口,使得原本接口不兼容的类可以相互合作。
策略模式定义了一系列算法族,并封装在类中,它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
设计模式讲的是如何编写可扩展、可维护、可读的高质量代码,它是针对软件开发中经常遇到的一些设计问题,总结出来的一套通用的解决方案。
模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中,使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
迭代器模式提供了一种方法,用于遍历集合对象中的元素,而又不暴露其内部的细节。
外观模式又叫门面模式,它提供了一个统一的(高层)接口,用来访问子系统中的一群接口,使得子系统更容易使用。
单例模式(Singleton Design Pattern)保证一个类只能有一个实例,并提供一个全局访问点。
组合模式可以将对象组合成树形结构来表示“整体-部分”的层次结构,使得客户可以用一致的方式处理个别对象和对象组合。
装饰者模式能够更灵活的,动态的给对象添加其它功能,而不需要修改任何现有的底层代码。
观察者模式(Observer Design Pattern)定义了对象之间的一对多依赖,当对象状态改变的时候,所有依赖者都会自动收到通知。
代理模式为对象提供一个代理,来控制对该对象的访问。代理模式在不改变原始类代码的情况下,通过引入代理类来给原始类附加功能。
工厂模式(Factory Design Pattern)可细分为三种,分别是简单工厂,工厂方法和抽象工厂,它们都是为了更好的创建对象。
状态模式允许对象在内部状态改变时,改变它的行为,对象看起来好像改变了它的类。
命令模式将请求封装为对象,能够支持请求的排队执行、记录日志、撤销等功能。
备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。 基本介绍 **意图:**在不破坏封装性的前提下,捕获一个对象的内部状态,并在该
顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为
享元模式(Flyweight Pattern)(轻量级)(共享元素)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结