由于各种缘由,一本《.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. ajax加php实现三级联动

    js代码 <script type="text/javascript">    function get_next(t,pid){  //当前元素的id,当前optio ...

  2. Oracle 常用操作

    修改数据库表名:rename [old-table] to [new-table]; while循环添加测试数据: declare     i int:=1;     begin     while ...

  3. What we learned in Seoul with AlphaGo

    What we learned in Seoul with AlphaGo March 16, 2016 Go isn’t just a game—it’s a living, breathing c ...

  4. [转载]OpenFileDialog对话框Filter属性

    首先说明一个示例,分析一下Filter属性的构成:“ Excel文件|*.xls ”,前面的“Excel文件”成为标签,是一个可读的字符串,可以自定定义,“|*.xls”是筛选器,表示筛选文件夹中后缀 ...

  5. 配置JAVA的环境变量

    下面开始配置环境变量,右击[我的电脑]---[属性]-----[高级]---[环境变量],如图: 选择[新建系统变量]--弹出“新建系统变量”对话框,在“变量名”文本框输入“JAVA_HOME”,在“ ...

  6. MyEclipse中创建maven工程

    转载:http://blog.sina.com.cn/s/blog_4f925fc30102epdv.html     先要在MyEclipse中对Maven进行设置: 到此Maven对MyEclip ...

  7. Qt:无标题栏无边框程序的拖动和改变大小

    From: http://blog.csdn.net/kfbyj/article/details/9284923 最近做项目遇到的问题,总结下. 有时候我们觉得系统的标题栏和按钮太丑太呆板,想做自己的 ...

  8. POJ3080——Blue Jeans(暴力+字符串匹配)

    Blue Jeans DescriptionThe Genographic Project is a research partnership between IBM and The National ...

  9. 《RabbitMQ in action》

    Producers create messages and publish (send) them to a broker server (RabbitMQ).What’s a message? A ...

  10. API HOOK技术

    API HOOK技术是一种用于改变API执行结果的技术,Microsoft 自身也在Windows操作系统里面使用了这个技术,如Windows兼容模式等. API HOOK 技术并不是计算机病毒专有技 ...