如何提高TDD(Test Driven Devlopment)的开发效率
在Java的开发中非常提倡采用TDD的方式开发程序,很多人会觉得这样会写很多的代码,甚至测试代码要超过功能代码好几倍,刹眼一看似乎这样并没提高效率,当然从短期看似乎似乎这样的,但是从长远看这样是划算的。以后我们重构了系统的代码,在进行测试就能节省很多时间,可以有测试代码来验证我们的重构,并没有改变程序原有的行为准则。这样我们重构代码时也没有后顾之忧了。
但是如何提高TDD开发的效率呢(希望大家献计献策)?
在TDD的开发中我发现了一些问题也是我在一些惨痛的教训中总结出来的,希望和你们一起分享
1.不要写出过于复杂的测试代码,一旦这样的测试代码中都存在bug就无法达到测试我们功能代码的目的,我们一直讲编程中提高的KISS原则(Keep It Simple, Stupid)要在这里充分发扬, 另外一个适度的保持DRY原则(Don’t Repeat Yourself),为什么是适度的呢,这里过于DRY的代码可能导致测试代码过于复杂因而导致测试代码中存在bug,从而无法正确的测试功能代码,连验证代码的代码都出问题了,还能谈对功能代码的测试么?
2. 准备测试数据可以通过一定规则生成,避免么一个都手工对对象进行复制,这样可以提高一部分效率,特别是构建一些复杂的组合对象时,及需要构造一定数量的此类对象。
3. 断言非基本类型,如自定义对象,对象集合等。这样的代码往往需要我们使用assertEquals(…,…);逐个的对其成员进行比较,而这些代码几乎是机械式的对于这种代码我们在测试中应该充分的运用DRY原则(参考上文)注意知识这种情况!首先将对象的比较其提取出一个方法,以后在其他地方需要断言两个对象或者集合进行断言时可直接调用前面已经提取好的方法,避免大面积的对某一对象的成员逐个assertEquals(…,…);
一个业务提供中的domain, 领域对象 或者说 entity, 都准备好对于的 assertXXXEquals,assertXXXListEquals, assertXXXArrayEquals, …
4. 另外要养成对一个习惯始终保持对功能代码和测试代码的pass,不要前期一段时间采用TDD后面由于时间关系放弃了,只顾着写功能代码而放弃测试代码,一定要每时每刻保持两者的pass, 对待测试代码要和功能代码一样尊重。你的代码行为需要它来监督(民主的代码更可靠)
关于如何如何编写单元测试有效的对涉及到操作数据库的场景,如何做到完成单元测试的同事也不会破坏数据库原有数据?以及其他其他结合Mock框架实现单元测试等心得及经验总结望大家在这方面大家在这方面多多献计献策!让我们彼此共同成长!
Tuesday, October 25, 2011
By: cppmule or sniper
E-Mail: 47406310@qq.com
分享到:
相关推荐
TestDriven.NET是一款强大的自动化测试工具,专为.NET平台设计,旨在简化开发人员的测试过程,提高软件质量。这款工具的核心特性在于它集成了各种单元测试框架,如NUnit、MsTest、xUnit等,允许开发者在IDE(集成...
《Test Driven: Practical TDD and Acceptance TDD for Java Developers》是一本专注于Java开发者进行测试驱动开发(TDD)和验收测试驱动开发(Acceptance TDD)的专业书籍。这本书以PDF英文版的形式提供,旨在帮助...
总的来说,TestDriven.NET是一个强大的工具,对于.NET开发人员来说,它简化了测试过程,提高了开发效率,促进了高质量代码的编写。通过其全面的功能和对各种测试框架的支持,它已经成为.NET TDD实践中不可或缺的一...
TestDriven.NET是一款强大的测试驱动开发(TDD)工具,专为.NET开发者设计,尤其是那些使用Visual Studio IDE的用户。此工具的2019年最新版本是TestDriven.NET-5.0.18119,它提供了一个高效且便捷的方式来运行单元...
总之,TestDriven.NET是C#开发者进行单元测试的强大工具,它简化了测试过程,提升了开发效率,并通过代码覆盖率报告帮助确保代码质量。正确地使用和理解这个工具,可以极大地改善C#项目的质量和可靠性。
1. **快速测试执行**:通过集成到IDE中,TestDriven.NET允许开发者在编写代码的同时快速运行单个测试或整个测试集,极大地提高了开发效率。这使得开发者可以快速验证代码更改是否符合预期,从而遵循TDD的原则。 2. ...
TestDriven 3.4是该工具的最新版本,针对个人用户设计,旨在提升开发效率和代码质量。 TestDriven 的核心功能在于它的集成开发环境(IDE)插件特性,它无缝集成于Visual Studio等.NET开发工具中,使得程序员可以在...
TDD(Test-Driven Development) 测试驱动开发是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD得原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。TDD虽是敏捷方法...
通过与这些测试框架的集成,TestDriven.NET 使得开发者能够更加高效地进行测试驱动开发 (TDD),从而提高代码的质量和可维护性。 #### 二、快速入门 本节将介绍如何快速上手使用 TestDriven.NET 进行单元测试。 ###...
在《Test-Driven and Acceptance TDD for Java Developers》这本书中,作者Lasse Koskela可能介绍了如何将模型驱动的方法与测试驱动开发(TDD)相结合,以便于Java开发者能够更有效地构建高质量的应用程序。...
在实际开发中,TestDriven.NET通过其直观的界面和高效的工作流程,极大地提升了C#开发中的TDD体验,从而提高了软件质量并减少了后期维护的困难。总的来说,TestDriven.NET是C#开发者的强大工具,它简化了测试驱动...
TestDriven.NET是一款强大的Visual Studio插件,专注于支持单元测试,为.NET开发人员提供了一种高效、便捷的方式来执行和管理他们的代码测试。版本2.14.2190相较于之前的2.8版本,显然在功能和性能上有所提升,旨在...
在软件开发领域,测试驱动开发(Test Driven Development,TDD)技术在逐渐为广大开发者所接受,它是在添加新代码之前让你的测试代码出错的一种开发技术。在开始编写代码之前首先要写你的测试代码,然后再编写代码让...
在软件开发领域,测试驱动开发(Test-Driven Development, TDD)是一种被广泛推崇的方法论,它提倡在编写实际代码之前先编写测试用例。这种方法不仅能提高代码质量,还能帮助开发者更好地理解需求,并促进代码设计的...
TestDriven.Net不仅支持各种主流的.NET测试框架,如NUnit、MsTest、xUnit等,还允许快速测试代码、调试测试和持续集成,极大地提高了开发效率。 在描述中提到的问题,可能是指用户在其他地方寻找类似工具时遇到了...
By taking you through the development of a real web application from beginning to end, the second edition of this hands-on guide demonstrates the practical advantages of test-driven development (TDD) ...
Test-Driven Development(TDD)简介,使用Nunit开发自动测试案例.
测试驱动开发(Test Driven Development.TDD)技术在逐渐为广大开发者所接受.它是在添加新代码之前让你的测试代码出错的一种开发技术。在开始编写代码之前首先要写测 试代码.然后再编写代码让你的测试通过.可以...
1. **测试驱动开发(TDD)的概念** 2. **TDD的核心原则与实践** 3. **单元测试介绍** 4. **重构技巧** 5. **让测试指导开发流程** 6. **模拟外部资源** 7. **实际应用中的TDD实施** 8. **用户故事实现** 9. **集成...