由于各种缘由,一本《.Net单元测试艺术》突然出现在了我的办公桌上,于是我的单元测试之路就此开始。通过一两个月不间断的学习,以及不断结合具体的项目做开发,再结合书上的知识对单元测试有了一些个人的理解,想在此与大家交流一下。

  下面分为三个部分,首先说说开发过程中个人发现的一些问题,再说说单元测试在开发过程中的作用,最后,也是最重要的如何在项目中应用单元测试。由于本人是从事.Net开发的,所以会以NUint作为单元测试工具,并且和大家分享一下,我在使用NUnit过程中遇到的一些问题,以及对单元测试的一些粗线的理解。

一、软件开发过程中存在的问题(没有使用单元测试的情况下)

  1. 难于定位bug的位置
  2. 修改一个bug,容易引进n个bug
  3. bug越后期发现,修改越困难
  4. 后期系统的复杂性,导致难于修改和重构代码
  5. 开发人员常认为编译通过,进行了几次手工测试就等于测试通过
  6. 在完全依赖外部系统的情况下,无法进行有效的测试
  7. 手工测试效率地下,针对性不强
  8. 代码难以维护和复用
  9. 开发人员觉得测试和修改是额外的工作,认为代码通过编译和调试就完成任务

二、单元测试在开发过程中起到的作用

  1. 单元测试大大节约了测试和修改的时间
  2. 单元测试能快速定位bug
  3. 单元测试能使开发人员重新审视需求和功能的设计
  4. 单元测试强迫开发者以调用者而不是实现者的角度来设计代码,利于代码之间的解耦
  5. 自动化的单元测试能保证回归测试的有效执行
  6. 便于理解API函数的如何使用
  7. 有效且便于测试各种情况
  8. 使代码可以放心修改和重构
  9. 单元测试可用作被测代码的用法说明,可作为开发文档使用

三、如何在实际项目中应用单元测试(.Net项目为例)

  1. 选用NUnit作为单元测试工具
  2. NUnit的简单使用
  3. 单元测试的核心技术

  由于篇幅和个人精力有限,我会在下一篇中讲解如何在实际项目中应用单元测试。

(一)NUnit单元测试心得的更多相关文章

  1. (二)NUnit单元测试心得

    现在接着上次说到的内容,如何在项目中进行单元测试.由于做了一些调整,我上次发的内容,我这次也会重新发一次,请认真看看. 一.软件开发过程中存在的问题(没有使用单元测试的情况下) 难于定位bug的位置 ...

  2. C# ~ NUnit单元测试

    单元测试 单元测试(Unit Test)的一个测试用例(Test Case)是一小段代码,用于测试一个小的程序功能的行为是否正常,保证开发的功能子项能正确完成并实现其基本功能.一个单元测试是用于判断某 ...

  3. NUnit单元测试

    单元测试对程序员来说是非常重要的一门技术,但是在实际编程中却往往被程序员所忽视.微软的VS开发工具为我们提供了强大的单元测试环境,在VS当中可以直接对类库项目进行测试,极大的方便了程序员的自我纠错能力 ...

  4. NUnit单元测试资料汇总

    NUnit单元测试资料汇总 从安装到配置 首先到官网http://www.nunit.org/下载如下图的资料,安装NUnit-2.6.1.msi包. 然后挂在VS2010外部工具这个地方来使用,工具 ...

  5. Nunit单元测试入门学习随笔(一)

    Nunit单元测试 一.插件安装与项目关联 选择工具~扩展和更新 点击联机~搜索Nunit安装图内三个插件 新建单元测试项目 勾选项目引用 二.Nunit学习 1.了解单元测试 单元测试在我的理解是测 ...

  6. nunit单元测试详解

    在粗略看了代码后,下面就详细说明相应的测试标记(属性)的用法. [TestFixture(arguments)]属性标记类为测试类,若没有填写参数,则测试类必须含有无参构造函数,否则需要相应的有参构造 ...

  7. NUnit单元测试示例

    单元测试的用法 1.下载NUnit软件 安装后打开界面如图: 2.新建测试项目 添加类库项目并在NuGet管理包中添加NUnit 这里添加NuGet的NUnit包要注意保持版本和之前下载的NUnit软 ...

  8. Visual Studio 2012使用NUnit单元测试实践01,安装NUnit并使用

    在Visual Studio 2012中,默认使用Microsoft自带的MS-Test测试框架.但,Visual Studio同样允许使用第三方测试框架,比如NUnit,xUnit,MbUnit,等 ...

  9. NUnit单元测试笔记

    vs2010 和 NUnit 问题处理. . 在 <configuration> 下 加 ... <startup> <requiredRuntime version=& ...

随机推荐

  1. C++中头文件相互包含与前置声明

    一.类嵌套的疑问 C++头文件重复包含实在是一个令人头痛的问题,前一段时间在做一个简单的数据结构演示程序的时候,不只一次的遇到这种问题.假设我们有两个类A和B,分别定义在各自的有文件A.h和B.h中, ...

  2. 同一台Windows机器中启动多个Memcached服务

    同一台Windows机器中启动多个Memcached服务 这就需要在一台机器上启动多个Memcached服务了. 假设Memcached在如下目录:C:\memcached\memcached.exe ...

  3. spoj 42

    简单题   水水~~ /************************************************************************* > Author: x ...

  4. "Principles of Reactive Programming" 之<Actors are Distributed> (1)

    week7中的前两节课的标题是”Actors are Distributed",讲了很多Akka Cluster的内容,同时也很难理解. Roland Kuhn并没有讲太多Akka Clus ...

  5. Mesh Baker的基本操作与功能演示

    原地址:http://www.narkii.com/club/thread-301789-1.html 如何降低游戏在系统中的消耗并带给用户最佳的体验是开发者一直追求的目标,在Unity里面对于模型与 ...

  6. 大象的崛起!Hadoop七年发展风雨录

    http://www.open-open.com/news/view/a22597 在互联网这个领域一直有这样的说法:“如果老二无法战胜老大,那么就把老大赖以生存的东西开源吧”.当年Yahoo!与Go ...

  7. 学习记录:浏览器JAVASCRIPT里的WINDOWS,DOCUMNET

    看完以下这段话之后,就理解DOCUMNET.READY之类的说法了. 或是JAVASCRIPT的浏览器里更细致的操作DOCUMENT的东西了. DOCUMNET和WINDOWS谁大谁小, 立即执行的匿 ...

  8. Android应用启动画面

    原文地址: [Android]应用启动画面 - 空客的日志 - 网易博客 http://blog.163.com/da7_1@126/blog/static/104072678201291921028 ...

  9. hibernate--持久对象的生命周期介绍

    持久化对象的状态 : 1. 瞬时对象(Transient Object):使用new操作符初始化的对象不是立刻就持久的.它们的状态是瞬时的,也就是说它们没有任何跟数据库表相关联的行为,只要应用不再引用 ...

  10. VS2010调试 --指南 Reference from : http://blog.csdn.net/kingzone_2008/article/details/8133048

    1 导言 在软件开发周期中,测试和修正缺陷(defect,defect与bug的区别:Bug是缺陷的一种表现形式,而一个缺陷是可以引起多种Bug的) 的时间远多于写代码的时间.通常,debug是指发现 ...