由于各种缘由,一本《.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. apache与nginx日志文件的区别(转载)

    apache与nginx日志文件的区别 转载:http://www.xfcodes.com/apache/log/3270.htm 导读:apache与nginx日志文件的区别,在apache与ngi ...

  2. 解决MS Azure 不能ping的问题

    PsPing v2.01 PsPing implements Ping functionality, TCP ping, latency and bandwidth measurement. Use ...

  3. spoj 42

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

  4. Linux rm命令

    rm可以用来删除文件和文件夹.  rm --help Usage: rm [OPTION]... FILE... Remove (unlink) the FILE(s).   -f, --force ...

  5. jquery类选择器无法取得对象问题原因

    <html> <script type="text/javascript" src="jquery-1.9.1.js"></scr ...

  6. Android 动态Tab分页效果

    当前项目使用的是TabHost+Activity进行分页,目前要做个报表功能,需要在一个Tab页内进行Activity的切换.比方说我有4 个Tab页分别为Tab1,Tab2,Tab3,Tab4,现在 ...

  7. fedora

    http://blog.chinaunix.net/uid-14735472-id-3486501.html 使用 http://blog.csdn.net/crystony/article/deta ...

  8. Java基于Servlet过虑器

  9. mongoDB入门必读

    一.概述 MongoDB是一个基于分布式文件存储的数据库开源项目. 由C++语言编写,旨在为WEB应用提供可护展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之间的产品. ...

  10. 使用EventLog类写Windows事件日志

    在程序中经常需要将指定的信息(包括异常信息和正常处理信息)写到日志中.在C#3.0中可以使用EventLog类将各种信息直接写入Windows日志.EventLog类在System.Diagnosti ...