Nunit单元测试实践

项目中经常遇到这样的问题,写好的模块,由于需求的变更,数据库字段进行了修改,逻辑也有些变更,于是乎,在一大堆代码修改后,进行运行界面开始测试。无奈一次不可能写对所有的逻辑,或者连字符都拼错。尤其是做B/S系统的时候,调试好一个功能,往往花费你大量的时间。而且,有更改的话,还要重来一遍,如果遇上些关联关系,调试测试就更加复杂了。并且,在项目做了N个模块后,又修改了一个功能,说实话,天知道其他逻辑是否产生BUG了没,呵呵。

所以,引进单元测试还是很有必要的,合理使用,还是很能够改进代码质量。看似CODE的时间延长了,实际上却大大的缩短了DEBUG时间,并且大大减少了修改功能影响其他方法的边际相应。

如果做是比较好的实践呢?

一般大家都使用Nunit,这个不难,随便园子里面、网上都能搜到很多入门文章,我也不在复述。只谈谈注意事项。

1.测试只需做到逻辑操作的测试、数据crud的测试就行了。前端ui数据的收集显示不是Nunit做的。我们的任务是确保传送给ui的数据是正确的就行了。

如图,在标准的demo中,我只进行了bll和dal层的测试

2. 测试数据库最好和平时使用的数据库分开,因为平时的测试数据并不能很好的解决自动化测试的问题,如上图,用app.config单独进行了库的配置(DEMO用的是同一个库)

3.测试数据根据情况进行构造和清理

有时候数据需要清理,但有时候不需要,因为做分类测试的话,有些数据保留比较方便,因此,尽量使用[Test,Category("xx")] 进行分类

4.跟据模块来测试提高效率和测试效果

通过分类测试,更容易的看出某个模块的问题,有时候,单独测试一个方法的数据并不能说明什么问题

5.结合TestDriven.net让你事半功倍,结合这类vs的add-in工具,测试变得更加方便了,nunit成了摆设,基本上打开他是为了看到绿色的进度条来爽一把。

时间: 2024-12-04 17:12:15

Nunit单元测试实践的相关文章

单元测试实践的主要问题与解决(1)

本文是我在"第十届中国系统与软件过程改进年会广东会场"所作演讲的整理稿,主要分享单元测试的一些要点.单元测试实践的主要问题,以及如何来解决这些问题. 一.单元测试概述 1.1 什么是单元测试 单元测试,就是针对代码单元的独立测试.为什么需要单元测试呢?这是代码的基本特性决定了的.代码有一个基本特性,就是对数据分类处理. 代码通常会有很多的判定.一个判定,就是一次分类.嵌套的判定,会使分类次数的翻倍. 如果我们在写代码的时候,有一个分类漏掉了,就会产生一个Bug:如果一个分类,虽然写了代

单元测试实践的主要问题与解决(2)

二.单元测试实践的主要问题 单元测试有个特点:测试简单独立的代码很容易,但要在实际工作中做好单元测试却很困难. 根据我们的经验,企业在实施单元测试时,通常会面对四大问题-- ● 不愿做:程序员没有单元测试习惯. ● 没时间:编写测试代码需要耗费大量的时间,项目的周期可能不允许. ● 做不了:代码具有较高的耦合性,使单元测试难以进行. ● 做不好:测试效果不能令人满意.我们通常会以覆盖率来衡量测试效果,但要实现高标准的测试覆盖很困难. 三.解决思路和方法 如何解决上述问题呢?接下来,谈谈一些思路和

自动化单元测试实践之路

自动化单元测试并不是什么新鲜事物,它应该是团队持之以恒的事情,可能有很多团队知道如何去做,但是还做得不够好:还有不少团队不知道如何去做,甚至有一些旧系统还不敢去重构,还在坚持着Java中的main方法调用的方式来执行,在漫长等待构建结果. 本文主要讲基于Java项目如何做自动化单元测试的实践. 1 是否值得 关于单元测试的意义,详细参考stackoverflow这篇文章: http://stackoverflow.com/questions/67299/is-unit-testing-worth

JUnit单元测试实践:测试工具类和方法

工作中,为了提高Web开发的质量和效率,近期又为了保证自己的工具类等一系列可复用组件的质量,我煞费苦心地开始认真学习和撰写单元测试用例. 我现在已经厌倦了Debug程序,更讨厌Debug Web程序,太浪费时间了. 最近,线上的一个BM项目,出了个bug.浮点数相减,没有判断null,搞的我加班到9:30. 苦逼的码农啊. 下面,分享我的一个工具类和对应的单元测试用例. 有不对的地方,还望能告知我.大家共同进步. /** * 判断Collection(List和Set),Map等集合类型是否为空

实践单元测试(3)-Using NUnit

NUnit是.net平台上使用得最为广泛的测试框架之一,本文将通过示例来描述NUnit的使用方法,并提供若干编写单元测试的建议和技巧,供单元测试的初学者参考. 继续下文之前,先来看看一个非常简单的测试用例(TestCase): 1 [Test]2 public void AdditionTest()3 {4 int expectedResult = 2;5 6 Assert.AreEqual(exptectedResult, 1 + 1);7 } 你肯定会说这个TestCase也太白痴了吧!这也

艾伟_转载:单元测试之道(使用NUnit)

首先来看下面几个场景你是否熟悉 1.你正在开发一个系统,你不断地编码-编译-调试-编码-编译-调试--终于,你负责的功能模块从上到下全部完成且编译通过!你长出一口气,怀着激动而又忐忑的心情点击界面上的按钮,顿时你刚刚的轻松感烟消云散:系统无法正常工作,你想读的数据显示不出来,你想存的东西也送不到数据库--于是,你再次回到IDE里,设断点.调试.一层一层跟踪,当你精疲力尽终于将数据送到数据库里,你又发现了其它问题,于是你继续设断点.调试.编译.调试-- 2.你狂躁地敲击着键盘和鼠标,咒骂着不断出现

如何做好单元测试

前言 单元测试是对软件基本组成单元进行的测试,是属于白盒测试的范畴,它主要通过对代码的逻辑结构进行分析来设计测试用例.在动态测试手段中,单元测试是一种非常高效的测试方法,并且是软件测试周期中第一个进行的测试.从成本角度考虑,缺陷发现越早越好,加强单元测试力度有利于降低缺陷定位和修复难度,从而降低缺陷解决成本,同时加强单元测试也减轻了后续集成测试和系统测试的负担.根据业界的统计,一个 BUG 在单元测试阶段发现花费是 1 的话,到集成测试就变为 10 ,到系统测试就高达 100 ,到实际推向市场量

防御性编码和单元测试规则

开发人员编写代码.不幸的是,开发人员也编写缺陷,其中大多数缺陷是在最初的编码阶段加入的.修复这些缺陷成本最低的地方同样也是在开发的初始阶段.如果等到功能测试或者系统测试来捕获并修复缺陷,那么您的软件开发成本就会高得多.在本文中,作者 Scott Will.Ted Rivera 和 Adam Tate 讨论了一些基本的"防御性"编码和单元测试实践,让开发人员更容易找到缺陷 -- 更重要的是,从一开始预防缺陷产生. 防御性驾驶和防御性开发 大多数司机接受过防御性驾驶技术的教育 -- 这有很

《有效的单元测试》一导读

前 言 过去10余年间,Java开发者显著地青睐开发者测试.如今,计算机科学专业的毕业生无人不知自动化单元测试及其在软件开发中的重要性.这个想法很简单--确保我们的代码能工作并且一直能工作--但是该技能需要花很大力气去学习. 编写测试.学习JUnit的测试框架,这些都不难.要真正地掌握编写自动化单元测试实践,需要花大量时间在阅读并改善测试代码上.这种持续的测试重构能够尝试用不同方式来表达意图.组织测试的不同行为.用测试构建各种用到的对象--这才是一种务实的方式,用来自我学习和培养对单元测试的感觉