NUnit(单元测试)

C# ~ NUnit单元测试 1. NUnit是什么    NUnit 免费开源 (http://www.nunit.org),提供一套测试框架和一个测试运行程序(test runner)。2. NUnit做什么 阅读详情

NUnit

什么是单元测试:

在程序设计过程中会有许多种测试,单元只是其中的一种,单元测试并不能保证程序是完美无缺的,但是在所有的测试中,单元测试是第一个环节,也是最重要的一个环节。单元测试是一种由程序员自行测试的工作。简单点说,单元测试就是测试代码撰写者依据其所设想的方式执行是否产生了预期的结果。NUnit是一个为Net准备的自动化单元测试框架,它的作用就是帮助你方便的完成单元测试工作,同鼎鼎有名的JUnit一样,都是xUnit家族的成员。它的下载地址是:http://www.nunit.org。

测试先行:

"什么?先写测试?"你一定非常惊讶,对!就是先来编写测试代码,按照极限编程(XP)的理论,写测试就是对软件进行设计的过程,它的重要性甚至超过了实际完成功能的代码。先将测试写完,然后再来完成代码,这样,所有的测试通过之日也就是程序完成之时。

假设我们正在编写一个银行应用程序,首先,我们将NUnit提供的要nunit.framework.dll文件引入到工程中,并创建一个名为AccountTest的类,我们要测试的第一个类方法是TransferFunds。

 

namespace bank

{

using NUnit.Framework;

 

[TestFixture]

public class AccountTest

{

     [Test]

     public void TransferFunds()

     {

        Account source = new Account();

        source.Deposit(200.00F);

        Account destination = new Account();

        destination.Deposit(150.00F);

 

        source.TransferFunds(destination, 100.00F);

        Assert.AreEqual(250.00F, destination.Balance);

        Assert.AreEqual(100.00F, source.Balance);

     }

}

}

 

    首先要注意的是这个类关联了一个[TestFixture]特性(attribute)——这表示这个类包含了测试代码(这个特性可以被继承)。这个类必须是公有的,但他的父类并不受限制。这个类还必须有一个默认构造函数。

    类中唯一的一个方法——TransferFunds,关联了一个[Test]特性——这表示它是一个测试方法。测试方法的返回值必须为void并且不能带有参数。在我们的测试方法中,我们对被测试的对象进行了一般的初始化,执行了被测试的方法并检查了对象的状态。Assert类定义了一组方法用于检查给定的条件,在我们的例子中我们使用了AreEqual方法来确保交易过后两个账户都有正确的余额(这个方法有很多重载,我们在这个例子中使用的版本带有两个参数:第一个参数是我们的期望值,第二个参数是实际值)。

Account支持存款、取款和资金转帐。这个Account类看起来会是这个样子:

 

namespace bank

{

public class Account

   {

       private float balance;

       public void Deposit(float amount)

       {

          balance+=amount;

       }

 

       public void Withdraw(float amount)

       {

          balance-=amount;

       }

       public void TransferFunds(Account destination, float amount)

       {

       }

 

       public float Balance

       {

          get{ return balance;}

       }

   }

}

 

   

 

    编译并运行这个例子。假设你已经将你的测试代码编译为bank.dll。打开NUint Gui(安装程序会在你的桌面和“程序”菜单中建立一个快捷方式),打开GUI后,选择File->Open菜单项,找到你的bank.dll并在“Open”对话框中选中它。bank.dll装载后你会在左边的面板中看到一个测试树结构,还有右边的一组状态面板。单击Run按钮,状态条和测试树种的TransferFunds节点变成了红色——我们的测试失败了。“Errors and Failures”面板显示如下消息——“TransferFunds: expected <250> but was <150>”,在它正下方的堆栈跟踪面板报告了测试失败的语句在代码中的位置——“at bank.AccountTest.TransferFunds() in C:/nunit/BankSampleTests/AccountTest.cs:line 17”

 

    这正是预期的结果,因为我们还未实现TransferFunds方法。现在我们来搞定它。不要关闭GUI,回到你的IDE并修改代码,使你的TransferFunds方法看起来像这样:

 

public void TransferFunds(Account destination, float amount)

{

destination.Deposit(amount);

Withdraw(amount);

}

 

    现在重新编译你的代码并再次在GUI中点击Run按钮——状态条和数节点变绿了。(注意GUI会自动地为你重新加载程序集;我们可以一直开着GUI而在IDE中继续工作并写更多的测试)。

NUnit.Framework在VS2015中如何进行单元测试 微软在VS2015中加入了自动化生成测试功能, 在需要测试的源文件的公共方法中右键既可以创建单元测试。 不过需要注意的是,要在公共方法中创建,否则会提示这个错误 如下是自动化单元测试界面,可以发现在VS2015中,开放了对扩展单元测试的支持,如果你有自己安装的扩展单元测试,那么就会在生成自动化测试这里显示 下面来进入主题,如果进行NUnit单元测试 NUn 阅读详情

相关推荐

单元测试之道C#版——使用NUnit(中文版)

第14届震撼大奖(Jolt Award)、生产力大奖(Productivity Award)获奖作品!阐述使用自由公开的NUnit程序库以C#语言进行单元测试,其内容也广泛适用于其他语言和框架程序库。

【单元测试】NUnit框架了解及使用

何为单元测试(unit test) 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。 其实,对“单元”的定义取决于自己。如果你正在使用函数式编程,一个单元最有可能指的是一个函数。你的单元测试将使用不同的参数调用这个函数,并断言它返回了期待的结果;在面向对象语言里,下至一个方法,上至一个类都可以是一个单元(从一个单一的方法到一整个的类都可以是一个单元)。 单元测试怎么做 单元测试的实现方式包括: 人工静态检查、动态执行跟踪 人工静态检查:就是通常所说的“代码走读”,主要是保

欢迎指错||纠正||建议||水评+点赞&&评论&&关注&&转发 1万+

群晖设置公网ipv6方式域名解析访问

群晖、IPV6、域名解析

爬山虎的博客 2万+

学习NUnit测试C#项目

单元测试基础知识   单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。例如,你可能把一个很大的值放入一个有序list 中去,然后确认该值出现在list 的尾部。或者,你可能会从字符串中删除匹配某种模式的字符,然后确认字符串确实不再包含这些字符了。   执行单元测试,是为了

程序人生,学海无涯 2779

SLG项目开发经验二_大地图设计与实现

本文深入探讨了SLG游戏大地图设计与实现的关键技术,包括网格化业务框架、AOI系统优化、边界处理方案以及行军系统实现。通过Unity引擎的实践案例,详细解析了大地图性能优化的核心策略,如分块加载、GPU Instancing和差异同步协议,为SLG项目开发提供宝贵经验。

weixin_29001419的博客 219

EM算法求解混合伯努利模型

本文记录了EM算法求解混合伯努利分布的推导,并提供了matlab实验代码。

霁月难逢 彩云易散 6969

NUnit详细使用方法

<br />前一段时间,有人问我在.NET里如何进行TDD开发.这个问题促使我想对NUnit做一个详细的介绍.因为我们大家都知道NUnit是在.NET进行TDD的利器.<br />如果你已经知道很多关于NUnit的应用,请指出我的不对之处和提出一些建议,使本文更加完善.如果你对NUnit还不是很了解的话,我建议你还是阅读一下.本文分为以下部分:1. TDD的简介首先什么是TDD呢?Kent Beck在他的<<测试驱动开发 >>(Addison-Wesley Professional,2003)一书中,使用下

ddxkjddx的专栏 1116

Vivado静态时序分析学习笔记(1)

静态时序分析分为片内时序分析(寄存器与寄存器之间的时序关系)和片外时序分析(IO时序分析)。(1)建立时间 setup time在时钟事件(上升沿/下降沿)发生之前数据信号应保持稳定的时间。把实际电路抽象成前级D触发器+组合逻辑+后级D触发器。

Fantaasky的博客 4376

单元测试与Nunit的基本使用

一、单元测试是什么 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,C#里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相...

weixin_30436891的博客 510

ArcGIS学习记录—SHP文件转换为KML KMZ数据,并显示面要素相应的标注

使用相应软件操作获取KMZ数据得以下发到外业调查人员,使得矢量数据能够更显而易见,可视化,让外业人员的工作减轻许多。(过程步骤是借鉴于网络上的相关人士给的建议,根据这些建议自己做出来的步骤,可能有些粗略,有问题的话可以再进行探讨)...

qq_41046162的博客 5万+

Visual Studio报错TRK0005找不到CL.exe?三步彻底解决环境变量问题

本文详细解析了Visual Studio报错TRK0005找不到CL.exe的根本原因,并提供了三步彻底解决环境变量问题的方案。从验证安装完整性到配置永久环境变量,再到注册表级修复,帮助开发者建立健壮的开发环境配置体系,确保编译链稳定运行。

weixin_30839881的博客 459

Nunit使用方法

1. TDD的简介 首先什么是TDD呢?Kent Beck在他的&lt;&lt;测试驱动开发 &gt;&gt;(Addison-Wesley Professional,2003)一书中,使用下面2个原则来定义TDD: ·除非你有一个失败的自动测试,永远不要写一单行代码. ·阻止重复 我想第一个原则是显而易见的.在没有失败的自动测试下就不要写代码.因为测试是嵌入在代码必须满足的需求中...

weixin_34376986的博客 199

基于Matlab的深度学习OFDM系统信号检测

在接收端,我们首先去除循环前缀,然后对接收到的信号进行FFT变换和QAM解调。在通信系统中,正交频分复用(Orthogonal Frequency Division Multiplexing,OFDM)是一种常用的调制技术,它可以将高速数据流分成若干个低速子载波进行传输,提高了信道利用率和抗干扰性能。接下来,我们使用训练好的神经网络对QAM调制后的数据进行检测,得到估计的FFT变换结果。深度学习方法可以通过大量的训练数据来学习信号的特征,并具有一定的适应能力,在某些情况下可能能够获得更好的检测性能。

2301_79325657的博客 296

使用Nunit做单元测试

参加完自考、软考,对单元测试都是概念上的理解,这篇博文主要是从实践上,讲解一下单元测试如何实现,使用什么工具,以及简单的实例讲解。     一、单元测试     单元测试,是开发者编写的一小段代码,用于检测被测代码一个很小、很明确的功能是否正确,是否和开发者所期望的一致。使用单元测试可以很轻松的实现:     1.静态类的测试     2.静态方法的测试     3.类的

周江霄 5051

安卓手机强制清理数据恢复出厂设置后无法设置密码怎么办?(分享亲身经历的有效解决方案)

📱安卓手机强制清数据恢复出厂设置后,竟无法设置锁屏密码!本文将解析问题根源,分享亲测有效的解决方案,帮你快速摆脱困扰🎉

XiaoqiangClub的博客 242

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【C#】单元测试及NUnit的基本用法

单元测试 单元测试(Unit Testing)是针对程序弄块(软件设计的最小单位)来进行正确性检验的测试工作。单元测试通常由软件开发人员编写,用于确保他们了所写的代码匹配软件需求和遵循开发目标。 单元测试的优点: 适应变更。允许程序员在未来重构代码,并确保模块依然工作正确。 简化集成。采用自底向上的测试路径,消除程序单元的不可靠,使集成测试变得更简单。 文档记录。借助于查看单元测试提供的功能和单...

两个轮子的博客 1万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

NUnit单元测试

单元测试对程序员来说是非常重要的一门技术,但是在实际编程中却往往被程序员所忽视。微软的VS开发工具为我们提供了强大的单元测试环境,在VS当中可以直接对类库项目进行测试,极大的方便了程序员的自我纠错能力。除了官方的解决方案之外,还有一种非常好的免费开源的第三方测试工具,那就是NUnit。它是从Java中著名的JUnit单元测试框架移植过来,这个可以从官网中得到答案,http://www.n...

diaobiao8107的博客 154

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

用NUnit进行单元测试

用NUnit进行单元测试   转自:http://hi.baidu.com/chenying99/blog/item/b9b02423dab2de47935807b0.html   ---------------------------------------------------------------------------------------------------------...

注重长远 天天积累 cqujsjcyj 215

NUnit单元测试工具简介

本博客(http://blog.youkuaiyun.com/livelylittlefish)贴出作者(三二一、小鱼)相关研究、学习内容所做的笔记,欢迎广大朋友指正!                                                                                  NUnit单元测试工具简介                   

学习,思考,记录,分享。 3103

Nunit单元测试

什么是单元测试:在程序设计过程中会有许多种测试,单元只是其中的一种,单元测试并不能保证程序是完美无缺的,但是在所有的测试中,单元测试是第一个环节,也是最重要的一个环节。单元测试是一种由程序员自行测试的工作。简单点说,单元测试就是测试代码撰写者依据其所设想的方式执行是否产生了预期的结果。关于单元测试的重要性已经有许多文章做了很多深入的分析,这里就不再赘述。NUnit是一个为Net准备的自动化

四菜一汤 879

单元测试——Using NUnit

在.NET平台下进行单元测试,我们首先想到的应该是NUnit。NUnit是一个专门针对.NET的单元测试框架,也是.NET平台上使用得最为广泛的测试框架之一。

梵高先生 1142

使用NUnit进行单元测试

NUnit是xUnit家族中的一员,适用于.NET的开发者。其简单易用,界面简洁,是.NET程序员的好帮手。

zhang_qxian的专栏 2048

单元测试一NUnit

因为听过谢老师和钟老师的课,又讲到单元测试,感觉很重要。想想自己之前都没有好好对待过它。一带而过的用了一下。现在趁这个机会有必要好好总结一下,博客好好总结一下。 NUnit NUnit是一个专门针对于.NET来写的单元测试框架,它是xUnit体系中的一员,在xUnit体系中还有针对Java的JUnit和针对C++的CPPUnit,NUnit的官方网站是:http://www.nunit.org

好记性不如烂笔头--玲博小记 744

NUnit单元测试使用实例

1.新建.NET项目-->类库2.添加引用  nunit.framework.dll3.编写测试用例(Test Case) using System;using System.Collections.Generic;using System.Text;using NUnit.Framework;namespace NUnitTest{    //作者: 王文平    //日期:

apinghappy 1625
上一篇: 扫雷源代码刨析(J2ME)
下一篇: 与大虾对话: 领悟设计模式
shearlock
博客等级 码龄24年 2粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值