单元测试工具Nunit基本用法
NUnit使用详解(一)
NUnit使⽤详解(⼀)NUnit是⼀个单元测试框架,专门针对于.NET来写的,它是是xUnit的⼀员。
NUnit完全由C#语⾔来编写,并且编写时充分利⽤了许多.NET的特性,⽐如反射,客户属性等等.最重要的⼀点是它适合于所有.NET语⾔.单元测试:作为程序员在开发过程中,不可避免地要对软件的类及其⽅法进⾏测试。
在Web页⾯的测试过程中,好多朋友喜欢把测试结果使⽤Response.Write()显⽰在页⾯上。
⽽在类库组件的开发时,由于没有可视化界⾯,有时不得不为该类库添模⼀个测试的项⽬(Console,WinForm,等),在该项⽬中调⽤类库组件的功能,以查看测试结果。
上⾯这种测试不是我们推荐的⽅法,因为我们在测试的时候应遵循以下原则:尽量不要破坏原有的代码结构,即不要在原代码中添加⼀些冗余的测试代码。
测试模块应尽可能完整地展现测试结果。
测试模块不应⽤完即扔掉,要保存以备后续的维护测试。
⼀、NUnit运⾏界⾯《图1》在右边有⼀个进度条,如果所有测试案例运⾏成功,就为绿⾊,反之如果有⼀个不成功,则为红⾊,但也有黄⾊的.绿⾊描述⽬前所执⾏的测试都通过黄⾊意味某些测试忽略,但是这⾥没有失败红⾊表⽰有失败左边的树状⽬录是我们们编写的每⼀个测试单元。
底部的状态条状态:当所有测试完成时,状态变为Completed.运⾏测试中,状态是Running: <test-name>Test Cases:说明加载的程序集中测试案例的总个数。
这也是测试树⾥叶⼦节点的个数。
Tests Run:已经完成的测试个数。
Failures:到⽬前为⽌,所有测试中失败的个数.Time:显⽰运⾏测试时间(以秒计)⼆、在VS2008中配置NUnit进⾏测试1.新建⼀个类库项⽬。
2.在解决⽅案中的项⽬图标上右击,选择“属性”。
3.点击左边的“调试”标签4.在“启动操作”中选择“启动外部程序”,并指明NUnit程序的运⾏路径。
5.在启动选项中的“⼯作⽬录”下,指明当前类库项⽬的DLL⽂件的所在路径。
使用NUnit在.net编程中进行单元测试
科技信息2008年第24期SCIENCE &TECHNO LO GY INFORMATION 在程序设计的过程中有许多种测试,单元测试只是其中一种。
单元测试并不能保证程序是完美无缺的,但是在所有的测试中,单元测试是第一个环节,也是最重要的一个环节。
一、什么是单元测试单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小、很明确的功能是否正确。
通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。
二、为什么要使用单元测试我们在编写代码时,总是会反复调试保证它能够通过编译。
但通过编译,只能说明它的语法正确,却无法保证它的语义也一定正确。
1.单元测试可以减少程序的BUG要减少软件中的B UG 数量,方法之一就是拥有一个专业的测试组,其工作就是尽一切可能使软件崩溃。
但不幸的是,目前大多专业测试组做的都是功能测试、系统测试。
软件界有句俗语:“开发人员不应该测试自己写的代码”。
尽管这句话很有道理,但如果开发人员不对自己的代码进行测试,怎么知道代码是否按照预期的方式运行呢。
因此,对于我们不能保证正确的函数、方法不妨进行单元测试。
2.提高开发速度一般都认为单元测试会浪费时间,其实这是一个误区。
一旦编码结束,开发人员便迫不及待的进行软件的集成工作。
这从表面上看是一项进步,其实不然。
在这种开发步骤中,系统能够正常运行的可能性很小,更多的情况是充满了各种各样的BUG 。
发现软件错误的情况有很多:由开发人员发现;由尝试运行代码的开发人员发现;由测试人员发现;由最终用户发现。
如果在第一种情况下发现软件错误,则修复错误比较容易,成本也很低。
情况越靠后,修复软件错误的成本就越高;修复一个由最终用户发现的软件错误可能要耗费100或1000倍的成本。
如果开发能够在编写代码期间发现所有的软件错误,那是再好不过了。
为此,我们就必须编写能在编写代码时能运行的测试,单元测试正好可以做到这一点。
3.编写单元测试代码的过程其实就是设计程序的过程在编写单元测试代码时,我们实际上是在思考我们的代码根据预期会返回什么的结果,它其实就是程序设计的过程。
单元测试与Nunit的基本使用
return a * b; } /// <summary> /// 除法 /// </summary> public int Quotient(int a, int b) {
答:在开发时越早发现bug,就能节省更多的时间,降低更多的风险。单元测试先期要编写测试用例,是需要多耗费些时间,但是后面 的调试、自测,都可以通过单元测试处理,不用手工一遍又一遍处理。实际上总时间被减少了。
3. 项目经理或技术主管没有要求写单元测试,所以不用写。
答:写单元测试应该成为开发人员的一种本能,开发本身就应该包含单元测试。
要进行充分的单元测试,应专门编写测试代码,并与产品代码隔离。比较简单的办法是为产品工程建立对应的测试工程,为每个类建立对应 的测试类,为每个函数(很简单的除外)建立测试函数。
单元测试是由程序员自己来完成,最终受益的也是程序员自己。可以这么说,程序员有责任编写功能代码,同时也就有责任为自己的代码编 写单元测试。执行单元测试,就是为了证明这段代码的行为和我们期望的一致。
四、NUnit的使用。
本处演示所使用的NUnit版本为2.6.4,若要使用最新版可以去官网下载。
首先创建一个类库项目(也可以是其他项目),然后创建一个Test+类库名称的项目(也可以是项目名称+Test),用于代表是测试工程。如 下图:
Demonstration项目中含有一个计算功能类,对应的测试项目含有一个测试计算类,一个计算功能类中方法可能需要多个测试用例来完成检 测。如下展示出了2个类的代码:
NUnit使用介绍
NUnit使用介绍一、如何编写测试类a)将测试类标记为TestFixtureb)将需要测试的方法标记为Testc)选择性测试某方法或类,可将其标记为Explicitd)不想进行测试的方法,则可标记为Ignoree)不同分类的方法可用Category标记f)方法会预期发生异常,则标记为ExpectedExceptiong)测试时共享资源的初始化,可将资源的初始化代码放置于标记为Setup的方法体中h)释放资源或确保没有遗留,将代码写入标记为TearDown的方法体中i)只初始化一次,则方法标记为TestFixtureSetupj)与TestFixtureSetup匹配,释放资源用TestFixtureTearDown例:///<summary>///需测试的类///</summary>[TestFixture]public class NumersFixture{private int a;//共享资源private int b;//共享资源///<summary>/// TestFixtureSetUp 只初始运行一次///</summary>[TestFixtureSetUp]public void OpenConnection(){Console.Out.Write("open the connection to the database");}///<summary>/// TestFixtureTearDown 释放资源///</summary>[TestFixtureTearDown]public void CloseConnection(){Console.Write("close the connection to the database");}///<summary>///共享资源的初始化///</summary>[SetUp]public void init(){a = 1;b = 2;}///<summary>/// Test 标记需测试的方法///</summary>[Test]public void MultiplyTwoNumbers(){int product = a * b;Assert.AreEqual(product, 2);}///<summary>/// Category 标记同类的方法///</summary>[Test][Category("Numbers")]public void AddTwoNumbers(){int sum = a + b;Assert.AreEqual(sum, 3);}///<summary>/// Explicit 选择性测试,自动测试时忽略,可手动测试///</summary>[Test,Explicit][Category("Numbers")]public void DiminishNumbers() {int diminish = a - b;Assert.AreEqual(diminish, -1);}///<summary>/// ExpectedException 预期发生的异常///</summary>[Test][Category("Exception")][ExpectedException(typeof(DivideByZeroException))]public void DivideByZero(){int zero = 0;int infinity = a / zero;Assert.Fail("Should have gotten an exception");}///<summary>/// Ignore 不想进行测试的方法///</summary>[Test][Ignore("IgnoreMethod is ignored")]public void IgnoreMethod(){Console.Write("IgnoreMethod is ignored");}///<summary>/// TearDown 释放资源///</summary>[TearDown]public void clear() {a = 0;b = 0;}}二、在VS中应用NUnit 测试,如下配置即可:右键解决方法->属性->调试,将启动操作改为:启动外部程度,指向NUnit 的启动文件的路径C:\Program Files (x86)\NUnit 2.6.4\bin\nunit-x86.exe。
nunit测试报告
Nunit测试报告NUnit是一个用于测试.NET代码的单元测试框架,它提供了一种简单且灵活的方式来进行单元测试。
本文将介绍如何创建并使用NUnit测试报告。
步骤一:安装NUnit框架首先,我们需要安装NUnit框架。
可以通过NuGet包管理器来安装NUnit。
打开Visual Studio并选择你的项目,在解决方案资源管理器中右键单击项目,选择“管理NuGet程序包”。
在NuGet包管理器中搜索“NUnit”,然后安装最新版本的NUnit框架。
步骤二:创建测试类在项目中创建一个新的测试类,该类将用于定义测试方法。
测试类应该以“Test”结尾,以便与其他类进行区分。
以下是一个示例测试类的代码:using NUnit.Framework;[TestFixture]public class MyTests{[Test]public void TestAddition(){int result = Calculator.Add(2, 3);Assert.AreEqual(5, result);}}在上面的示例中,我们定义了一个名为“MyTests”的测试类,并在其中定义了一个名为“TestAddition”的测试方法。
在测试方法中,我们调用了一个名为“Calculator.Add”的方法来执行加法运算,并使用断言来验证结果是否符合预期。
步骤三:运行测试完成测试类的编写后,我们可以使用NUnit Test Runner来运行测试。
在Visual Studio中,选择“测试”菜单,然后选择“运行”>“所有测试”。
这将会运行项目中的所有测试方法,并生成测试报告。
步骤四:查看测试报告当测试完成后,我们可以查看生成的测试报告。
NUnit会生成一个包含测试结果的HTML文件。
打开该HTML文件,你将看到一个详细的测试报告,其中包含测试的结果、通过的测试用例、失败的测试用例以及其他有关测试的统计信息。
结论通过使用NUnit,我们可以轻松地进行单元测试,并生成详细的测试报告。
NUnit详细使用方法2
NUnit详细使用方法前一段时间,有人问我在.NET里如何进行TDD 开发.这个问题促使我想对NUnit做一个详细的介绍.因为我们大家都知道NUnit是在.NET进行TDD的利器. 如果你已经知道很多关于NUnit的应用,请指出我的不对之处和提出一些建议,使本文更加完善.如果你对NUnit还不是很了解前一段时间,有人问我在.NET里如何进行TDD开发.这个问题促使我想对NUnit做一个详细的介绍.因为我们大家都知道NUnit是在.NET 进行TDD的利器.如果你已经知道很多关于NUnit的应用,请指出我的不对之处和提出一些建议,使本文更加完善.如果你对NUnit还不是很了解的话,我建议你还是阅读一下.本文分为以下部分:1. TDD的简介首先什么是TDD呢?Kent Beck在他的<<测试驱动开发>>(Addison-Wesley Professional,2003)一书中,使用下面2个原则来定义TDD:·除非你有一个失败的自动测试,永远不要写一单行代码.·阻止重复我想第一个原则是显而易见的.在没有失败的自动测试下就不要写代码.因为测试是嵌入在代码必须满足的需求中.如果没有需求,就没有必要实现任何东西.所以这个原则阻止我们去实现那些没有测试和在解决方案中不需要的功能.第二个原则说明了在一个程序中,不应该包含重复的代码.如果代码重复,我想这就是不好的软件设计的象征.随着时间的流逝,它会对程序造成不一致的问题,并且使代码变非常混乱,因为我们时常不会记得重复代码的位置.如果发现代码重复,我想我们应该立即删除代码重复.其实这就涉及到重构了.在这里我就不多讲了.一般来说,测试分为2种类型,一是程序员自己的测试,另外一种是客户的测试.关于客户测试,我推荐一个FIT的框架,非常不错。
在这里,我们讲的TDD就是程序员测试.那么什么是程序员测试呢?我认为就是我们常说的单元测试.既然是单元测试,在.NET里势必会用到某些工具,目前最著名恐怕就是我即将介绍的NUnit了。
NUnit+NUnitAsp使用手册
NUnit+NUnitAsp使用手册内容提纲:1、NUnit1.1、NUnit概述1.2、NUnit的使用1.2.1、安装1.2.2、测试实现1.2.3、图形化界面的使用(nunit-gui.exe)1.2.4、命令行界面的使用(nunit-console)2、NUnitAsp2.1、NUnitAsp 概述2.2、NUnitAsp的使用2.2.1、安装2.2.2、使用参考资料1、NUnit返回页首--------------------------------------------------------------------------------1.1、NUnit概述NUnit是一个用来专门针对.Net应用程序进行单元测试的工具,利用它我们可以很方便的编写一个单元测试代码,方便我们进行单元测试。
NUnit最新的版本是2.1版,大家可以到站点/ 去下载。
使用NUnit可以通过两种方式:1.图形化界面nunit-gui.exe2.命令行方式nunit-console.exe返回页首--------------------------------------------------------------------------------1.2、NUnit的使用返回页首--------------------------------------------------------------------------------1.2.1、安装NUnit默认是安装在C:\Program Files\Nunit V2.1,安装成功后会在桌面出现一个快捷方式。
我们可以通过运行安装包自带的例子(nunit.tests.dll.)来验证安装是否成功,下面就是安装成功后出现的界面:返回页首--------------------------------------------------------------------------------1.2.2、测试实现1.测试工程的建立a.新建一个.Net类库,添加对nunit.framework.dll的引用,给类加上一个“TestFixture”特性,表明这个类包含测试代码;b.对具体的测试方法添加一个“Test”特性,表明这是一个测试方法,并且测试方法的返回值必须为void并且不能带有参数c.添加对要测试代码(dll)的引用namespace bank{using NUnit.Framework;[TestFixture]public class AccountTest{[Test]public void TransferFunds(){}}}2.Assert类的作用Assert类用在测试方法中,它定义了一组方法用于检查给定的条件,Nunit 可以通过这个类提供的方法。
NUnit基本使用方法
NUnit基本使⽤⽅法通常的单元测试框架都以他们⽀持的语⾔的开头字母加上Unit作为名字,他们统称为xUnit框架。
C++的叫做CppUnit,Java的叫做JUnit,.Net的叫做NUnit。
当然不是所有的都这么命名,但⼤部分如此。
下⾯我主要讲解⼀下NUni的⼀些基本操作。
1:Nunit两个重要属性1.1:[TestFixture]这个是标识包含⾃动化测试的类,可能改成TestClass⼤家更加理解。
但是代码是⽆法编译过去的。
1.2:[Test]这个是标识这个⽅法需要⾃动化测试的。
记得把这个属性加在要测试的⽅法上。
2:编写第⼀个单元测试2.1:⼀个单元测试通常包含三个⾏为:2.1.1:准备对象(就是对哪个对象就⾏操作)2.1.2:操作对象(对对象进⾏⼀些逻辑处理)2.1.3:断⾔(Assert)和预判产⽣的结果对⽐2.2:编写⼀个判断后缀名的⽅法public bool IsValidExtensions(string fileName){if (string.IsNullOrWhiteSpace(fileName)) throw new ArgumentNullException("fileName");var extension = Path.GetExtension(fileName);if (extension.Contains("pdf")){return true;}return false;}2.3:编写测试⽅法2.3.1:Assert这个类Assert.IsFalse(bool condition, string message)参数1:返回的结果参数2:展⽰失败的信息Assert.AreEqual(int expected, int actual, string message)参数1:期望的结果参数2:实际的结果参数3:展⽰失败的信息当然Assert很多⽅法可以⾃⼰去学习。
visual studio nunit使用方法
visual studio nunit使用方法
在Visual Studio中使用NUnit进行单元测试,需要以下步骤:
1.安装NUnit和NUnit测试框架。
2.创建测试项目。
3.编写测试用例。
4.运行测试。
5.安装NUnit和NUnit测试框架
在Visual Studio中,打开工具>扩展和更新>联机。
在搜索框中输入NUnit,然后单击查找。
找到NUnit和NUnit测试框架,然后单击安装。
创建测试项目
在Visual Studio中,打开文件>新建>项目。
在项目类型下,选择Visual C#>测试>单元测试项目。
在项目名称文本框中输入项目名称,然后单击确定。
编写测试用例
测试用例是用来验证代码是否符合预期行为的代码。
测试用例通常由以下部分组成:
1.测试名称:用于标识测试用例。
2.测试说明:用于描述测试用例的目的。
3.测试预期结果:用于描述测试用例的预期结果。
4.测试代码:用于验证代码是否符合预期行为的代码。
Nunit简单操作案例
Nunit简单操作案例
Nunit的操作流程很简单。
主要是对测试类(Test Case)的编写很重要。
这里只是简单介绍一下Nunit的使用流程。
以一个实例为例进行介绍,需要检验某一个流程中的a*b的值是否正确。
第一步,安装Nunit,Nunit的安装程序可以在网站上下载。
第二步,在visual studio中建立关于实例的方案,按下图顺序进行操作即可。
1图
图2
第三步,引用Nunit框架,如图:
3图
4图第四步,将Nunit加入到Visual Studio。
5图
6图第五步,增加一个类。
7图
类的代码如下:
using System;
using NUnit.Framework;
namespace NUnitstudy
{
[TestFixture]
public class NumersFixture
{
[Test]
public void AddTwoNumbers()
{
int a = 1;
int b = 2;
int c = a * b;
Assert.AreEqual(c, 2);
}
}
}
第六步,调试运行测试,单击7图中的运行绿色箭头,首先对项目进行编译,然后弹出Nunit_Gui,如图示:
图8
单击图8中的运行按钮,Nunit运行测试,运行结果如图9。
图9
说明:绿色表示运行结果正常;黄色表示没有运行;红色表示运行失败。
04单元测试NUnit
测试用例—存款测试
①建立帐户,存入50元。结果:账户50元。 ②建立帐户,先存入50元,再存入5.5元。 结果:账户55.5元。
测试用例—取款测试
①帐户余款1000元,取款450元。结果:账 户550元。 ②帐户余款1000元,取款456.74元。结果: 账户543.26元。
测试用例—转帐测试
作用
初始/清理测试方法 标记方法为测试方法 标记测试类 初始/清理测试类
TestFixtureSetUpAttribute/ TestFixtureTearDownAttribute
NUnit架构—类Assert的常用方法
方法名
AreEqual/AreNotEqual AreSame/AreNotSame Greater/ GreaterOrEqual/ Less/ LessOrEqual IsInstanceOfType/ IsNotInstanceOfType
2、测试按钮 3、测试进度
4、测试结果
1、待测试的项
NUnit架构—类
类名
Assert AssertionException CollectionAssert FileAssert StringAssert 断言 例外断言 集合断言 文件断言 字符串断言
作用
NUnit架构—特性(1)
特性
CategoryAttribute
为测试类增加测试方法(特性[Test])。
⑤
编译工程,用NUnit-Gui测试。
测试类注意事项
①
②
测试类访问修饰符为public。
测试方法访问修饰符为public。
③
④
测试方法返回类型为void。
测试方法之间不能有顺序依赖。
NUnit快速入门
public void TransferWithInsufficientFundsAtomicity()
{
Account source = new Account();
source.Deposit(200.00F);
Account destination = new Account();
{
}
}
}
Account类有三个方法:Deposit(存款), Withdraw(取款), TransferFunds(资金转帐)和两个属性:Balance(剩余金额),MinimumBalance(最小透支保护费)。当Balance小于MinimumBalance时,在TransferFunds方法中会抛出InsufficientFundsException异常
编译并运行这个例子。假设你已经将你的测试代码编译为bank.dll。打开NUint Gui(安装程序会在你的桌面和“程序”菜单中建立一个快捷方式),打开GUI后,选择File->Open菜单项,找到你的bank.dll并在“Open”对话框中选中它。bank.dll装载后你会在左边的面板中看到一个测试树结构,还有右边的一组状态面板。单击Run按钮,状态条和测试树种的TransferFunds节点变成了绿色,表示测试代码成功的通过了。(注意GUI会自动地为你重新加载测试程序集;我们可以一直开着NUnit的GUI而在Visual Studio IDE中继续编写更多的测试代码)。
public void TransferWithInsufficientFundsAtomicity()
{
try
{
source.TransferFunds(destination,300.00F);
用NUnit进行单元测试
NCover.Console E:\ZQS\test\test1\test1\bin\Debug\test1.exe //x E:\ZQS\test\test1\test1\bin\Debug\ D:\ D:\\testreport.xml
using NUnit.Framework; [TestFixture] public class NUnitTest1 { }
* 必须用public来声明该类 * 在类前面要用[TestFixture]来标识
NUnit单元测试方法 NUnit单元测试方法
第4步.为类NUnitTest1增加一个测试方法,测试代码将放到 为类NUnitTest1增加一个测试方法 增加一个测试方法, 该方法中 [TestFixture] public class NUnitTest1 { [Test] public void TestFunc() { } * 必须用public来声明该方法 }
NUnit单元测试方法应重点掌握 NUnit单元测试方法应重点掌握
NUnit与NCover的结合 NUnit与NCover的结合
提出问题
单元测试作为重要质量保证手段, 单元测试作为重要质量保证手段,可以保证开发过程中的 代码稳定性, 代码稳定性,但是如何知道有多少代码是经过单元测试的 呢?
NUnit与NCover的结合 NUnit与NCover的结合
用NUnit进行单元测试 NUnit进行单元测试
单元测试是程序员的一项基本职责和基本技能, 单元测试是程序员的一项基本职责和基本技能,直接影响 到程序员的工作效率和软件的质量, 到程序员的工作效率和软件的质量, 也直接影响到团队的合作。 也直接影响到团队的合作。试想以下的情形
软件测试之nunit使用步骤
软件测试之nunit使用步骤本文讲述了如何用NUnit 书写和组织测试代码的步骤。
简单的Test Case 书写软件测试代码的步骤:1.创建TestCase的一个实例;2.Override方法RunTest();3.如要检查某值,则调用Assert。
例如,测试“两个Money对象之和与包含它们之和的对象相等本文讲述了如何用NUnit书写和组织测试代码的步骤。
简单的Test Case书写软件测试代码的步骤:1.创建TestCase的一个实例;2.Override方法RunTest();3.如要检查某值,则调用Assert。
例如,测试“两个Money对象之和与包含它们之和的对象相等”的测试代码如下:public void TestSimpleAdd() {Money m12CHF= new Money(12, "CHF");Money m14CHF= new Money(14, "CHF");Money expected= new Money(26, "CHF");Money result= m12CHF.Add(m14CHF);Assert(expected.Equals(result));}如果要写的测试与以前写的测试非常像,那么就写一个Fixture来代替。
如果想在一个测试中运行更多的东西,就创建一个Suite。
Fixture如果有两个或两个以上的测试作用于相同或类似的对象集,我们该怎么办呢?测试作用于一个已知的对象集,这个对象集被称为fixture。
一般建立这个fixture的时间比实际测试的时间多得多。
当有个公共的fixture时,我们可以这么做:1.创建TestCase的子类。
2.为fixture的每部分加入一个实例变量。
3.Override SetUp()初始化这些变量。
4.Override TearDown()释放任何在SetUp中分配的永久资源。
nunit 报告格式 -回复
nunit 报告格式-回复NUnit报告格式这篇文章将会针对NUnit报告格式进行详细解析,提供一步一步的回答。
NUnit是一个广泛使用的单元测试框架,它提供了丰富的功能来帮助开发者进行单元测试。
NUnit报告是在运行测试后生成的文档,用于呈现测试结果和详细信息。
我们将会探索如何设置和解读这些报告。
第一步:安装和设置NUnit首先,我们需要在项目中安装NUnit框架。
可以通过NuGet包管理器或者手动安装NUnit框架包。
确保已经安装并配置了NUnit框架,然后开始进行单元测试。
第二步:编写单元测试在项目中编写单元测试方法,并使用NUnit提供的特性进行标记。
这些特性可以包括[TextFixture](表示一个测试类),[Test](表示一个测试方法),以及其他一些帮助我们配置和组织测试的特性。
确保单元测试方法具有良好的命名规范,并且能够清晰地表达被测试的功能和预期结果。
第三步:运行单元测试通过选择合适的运行选项(例如通过NUnit的可视化界面或命令行运行),开始运行单元测试。
NUnit将会执行你的测试方法,并记录测试结果和其他相关信息。
第四步:查看NUnit报告运行完成后,你将会看到一个生成的NUnit报告文件。
这个报告文件一般是XML格式的,可以使用任何可以显示XML的编辑器或浏览器进行查看。
打开报告文件后,你将会看到一系列的测试结果和附加信息。
这些信息包括测试是否通过、测试运行时间、执行环境,以及任何其他你可能在单元测试方法中记录的信息。
第五步:分析报告内容根据你的需要,分析报告内容以获取有关测试结果的详细信息。
你可以查看失败的测试用例并查找失败的原因,也可以查看通过的测试用例以确认预期结果的正确性。
除了测试结果,NUnit报告也提供了执行统计信息,比如运行时间、测试数量、通过的测试数量等。
这些统计信息可以帮助你评估你的单元测试的整体性能。
第六步:调试和修改根据报告中的结果和分析,你可能需要进行代码调试和修改。
单元测试之道
单元测试之道(使用NUnit)2010-08-02 作者:张洋来源:EricZhang's Tech Blog首先来看下面几个场景你是否熟悉1、你正在开发一个系统,你不断地编码-编译-调试-编码-编译-调试……终于,你负责的功能模块从上到下全部完成且编译通过!你长出一口气,怀着激动而又忐忑的心情点击界面上的按钮,顿时你刚刚的轻松感烟消云散:系统无法正常工作,你想读的数据显示不出来,你想存的东西也送不到数据库……于是,你再次回到IDE里,设断点、调试、一层一层跟踪,当你精疲力尽终于将数据送到数据库里,你又发现了其它问题,于是你继续设断点、调试、编译、调试……2、你狂躁地敲击着键盘和鼠标,咒骂着不断出现的bug:啊?这里怎么没返回值啊!哎?这里不该是0啊!不对啊,这里怎么没数据……你永远不知道还有多少bug,你也永远不知道你的改动会不会引入其它bug——这里有几十个甚至上百个类,几百几千个方法!我不能都照顾到啊!你感觉bugs像敲击鼹鼠游戏中的鼹鼠:打下了这个,另一个又从其它洞口露出头来……3、也许是毕业答辩的演示,也许是客户的审查,你小心地打开自己要演示的系统,进行着预定的操作,忽然,有个功能不能正常运行,你大汗淋漓,在答辩老师或者客户质疑且不满的目光下你试了又试,但还是于事无补……于是,答辩老师可能扭头便走,客户可能愤然离去,然后离去的还有你的学位证和项目奖金。
当后来你检查代码时,发现这一切竟然只是因为一个底层工具类中一个方法输出结果为空。
如果你觉得上面的场景令你似曾相识甚至痛心疾首,那么你应该看完这篇文章。
什么是单元测试单元测试(Unit Test)的一个测试用例(Test Case)是一小段代码,这段代码用于测试一个小的程序功能(一般是一个方法或相关的几个方法)行为是否正常。
下面给出一个实际项目中单元测试用例的代码,大家可以不用深究这段代码中的细节,这里贴这段代码只是给大家一个直观的感觉。
NUnit详细使用方法
NUnit2.0详细使用方法注:NUnit中文文档可以参看我的另一个站点:/nunit前一段时间,有人问我在.NET里如何进行TDD开发.这个问题促使我想对NUnit做一个详细的介绍.因为我们大家都知道NUnit是在.NET进行TDD的利器.如果你已经知道很多关于NUnit的应用,请指出我的不对之处和提出一些建议,使本文更加完善.如果你对NUnit还不是很了解的话,我建议你还是阅读一下.本文分为以下部分:1. TDD的简介首先什么是TDD呢?Kent Beck在他的<<测试驱动开发>>(Addison-Wesley Professional,2003)一书中,使用下面2个原则来定义TDD:·除非你有一个失败的自动测试,永远不要写一单行代码.·阻止重复我想第一个原则是显而易见的.在没有失败的自动测试下就不要写代码.因为测试是嵌入在代码必须满足的需求中.如果没有需求,就没有必要实现任何东西.所以这个原则阻止我们去实现那些没有测试和在解决方案中不需要的功能.第二个原则说明了在一个程序中,不应该包含重复的代码.如果代码重复,我想这就是不好的软件设计的象征.随着时间的流逝,它会对程序造成不一致的问题,并且使代码变非常混乱,因为我们时常不会记得重复代码的位置.如果发现代码重复,我想我们应该立即删除代码重复.其实这就涉及到重构了.在这里我就不多讲了.一般来说,测试分为2种类型,一是程序员自己的测试,另外一种是客户的测试.关于客户测试,我推荐一个FIT的框架,非常不错。
在这里,我们讲的TDD就是程序员测试.那么什么是程序员测试呢?我认为就是我们常说的单元测试.既然是单元测试,在.NET里势必会用到某些工具,目前最著名恐怕就是我即将介绍的NUnit了,2.NUnit的介绍NUnit是一个单元测试框架,专门针对于.NET来写的.其实在前面有JUnit(Java),CPPUnit(C++),他们都是xUnit的一员.最初,它是从JUnit而来.现在的版本是2.2.接下来我所用的都是基于这个版本.NUnit最初是由James W. Newkirk, Alexei A. Vorontsov 和Philip A. Craig, 后来开发团队逐渐庞大起来.在开发过程中, Kent Beck 和Erich Gamma2位牛人也提供了许多帮助.看来对于NUnit还真是下了一番力气了.JNUnit是xUnit家族种的第4个主打产品,完全由C#语言来编写,并且编写时充分利用了许多.NET的特性,比如反射,客户属性等等.最重要的一点是它适合于所有.NET语言.如果你还没有下载,可以到/去下载.2.1 NUnit的介绍Ok,下面正式讲解NUnit.在讲解之前,看看几张图片:图1 NUnit运行的效果图2 NUnit运行的另外一个效果从中我们可以非常容易发现,右边是个状态条,图1是红色的,图2是绿色的.为什么会这样呢?因为如果所有测试案例运行成功,就为绿色,反之如果有一个不成功,则为红色,但也有黄色的.左面的工作域内则是我们写的每一个单元测试.通过上面的图片,我想你对NUnit有个总的了解了.接下来还是分为2个部分,一是NUnit的布局,另外一部分就是它的核心概念.首先熟悉一下NUnit GUI的布局.让我们更进一步看一下测试运行器窗口的布局。
单元测试学习之NUint
单元测试学习之NUint⼀、NUnit介绍⼆、NUnit下载与安装 NUnit的每个版本都提供了两种形式的下载:安装⽂件和免安装⽅式,分别是*.msi格式和*.zip格式。
前者需要安装才能使⽤,并且会在安装过程中创建⼀些快捷⽅式和注册NUnit的dll到GAC,这样以后编写NUnit测试类的时候添加NUnit的dll就像添加.Net Framework的dll⼀样。
如果是下载的zip格式的⽂件,则不会创建快捷⽅式和注册dll,在编写单元测试类时需要⼿动指定NUnit的dll的路径。
NUnit的运⾏有三种⽅式:命令⾏和图形⽤户界⾯。
以当前电脑上安装的NUnit2.6.4为例,安装路径为:D:\Program Files\NUnit 2.6.4,其下有两个⽬录:bin、doc。
如果是采⽤免安装模式的话,运⾏NUnit就需要运⾏bin⽬录下的⽂件,在bin⽬录下有net-1.1和net-2.0两个⽂件夹,分别对应.net的不同版本。
下⾯介绍如何以不同的⽅式启动NUnit: 命令⾏模式:运⾏nunit-console.exe。
图形⽤户界⾯模式:运⾏nunit.exe。
并⾏(parallel)模式:运⾏pnunit-launcher.exe。
注意:.Net2.0版本的NUnit是使⽤/platform:anycpu参数来编译的,我们知道这样的结果是运⾏在x86的系统上会被JIT编译成32位的程序,⽽在x64的系统上会被JIT编译成64位的程序。
如果使⽤NUnit在x64系统上测试32位的程序就会带来问题。
为了避免这个问题,可以使⽤nunit-agent-x86.exe/nunit-x86.exe来测试,因为在编译的时候使⽤了/platform:x86作为编译参数。
下图是运⾏NUnit的GUI界⾯:三、NUnit的常⽤Attribute标记 这些都是可以⽤来作为类或者⽅法的属性,它们都是System.Attribute类的直接或间接⼦类,有如下: Category:⽤来将测试分类。
NUnit详细使用方法
NUnit2.0详细使用方法注:NUnit中文文档可以参看我的另一个站点:/nunit前一段时间,有人问我在.NET里如何进行TDD开发.这个问题促使我想对NUnit做一个详细的介绍.因为我们大家都知道NUnit是在.NET进行TDD的利器.如果你已经知道很多关于NUnit的应用,请指出我的不对之处和提出一些建议,使本文更加完善.如果你对NUnit还不是很了解的话,我建议你还是阅读一下.本文分为以下部分:1. TDD的简介首先什么是TDD呢?Kent Beck在他的<<测试驱动开发>>(Addison-Wesley Professional,2003)一书中,使用下面2个原则来定义TDD:·除非你有一个失败的自动测试,永远不要写一单行代码.·阻止重复我想第一个原则是显而易见的.在没有失败的自动测试下就不要写代码.因为测试是嵌入在代码必须满足的需求中.如果没有需求,就没有必要实现任何东西.所以这个原则阻止我们去实现那些没有测试和在解决方案中不需要的功能.第二个原则说明了在一个程序中,不应该包含重复的代码.如果代码重复,我想这就是不好的软件设计的象征.随着时间的流逝,它会对程序造成不一致的问题,并且使代码变非常混乱,因为我们时常不会记得重复代码的位置.如果发现代码重复,我想我们应该立即删除代码重复.其实这就涉及到重构了.在这里我就不多讲了.一般来说,测试分为2种类型,一是程序员自己的测试,另外一种是客户的测试.关于客户测试,我推荐一个FIT的框架,非常不错。
在这里,我们讲的TDD就是程序员测试.那么什么是程序员测试呢?我认为就是我们常说的单元测试.既然是单元测试,在.NET里势必会用到某些工具,目前最著名恐怕就是我即将介绍的NUnit了,2.NUnit的介绍NUnit是一个单元测试框架,专门针对于.NET来写的.其实在前面有JUnit(Java),CPPUnit(C++),他们都是xUnit的一员.最初,它是从JUnit而来.现在的版本是2.2.接下来我所用的都是基于这个版本.NUnit最初是由James W. Newkirk, Alexei A. Vorontsov 和Philip A. Craig, 后来开发团队逐渐庞大起来.在开发过程中, Kent Beck 和Erich Gamma2位牛人也提供了许多帮助.看来对于NUnit还真是下了一番力气了.JNUnit是xUnit家族种的第4个主打产品,完全由C#语言来编写,并且编写时充分利用了许多.NET的特性,比如反射,客户属性等等.最重要的一点是它适合于所有.NET语言.如果你还没有下载,可以到/去下载.2.1 NUnit的介绍Ok,下面正式讲解NUnit.在讲解之前,看看几张图片:图1 NUnit运行的效果图2 NUnit运行的另外一个效果从中我们可以非常容易发现,右边是个状态条,图1是红色的,图2是绿色的.为什么会这样呢?因为如果所有测试案例运行成功,就为绿色,反之如果有一个不成功,则为红色,但也有黄色的.左面的工作域内则是我们写的每一个单元测试.通过上面的图片,我想你对NUnit有个总的了解了.接下来还是分为2个部分,一是NUnit的布局,另外一部分就是它的核心概念.首先熟悉一下NUnit GUI的布局.让我们更进一步看一下测试运行器窗口的布局。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单元测试工具Nunit基本用法
1. 单元测试Unit Test :开发者编写的一小段代码,用于检验被测代码的一个很小的,很明确的功能是否正确。
2. 单元测试的具体表现:用于判断某个特定条件或场景下某个特定函数或方法的行为。
3. 单元测试的目的:为了证明某段代码的行为确实和开发者所期
1. 单元测试Unit Test:开发者编写的一小段代码,用于检验被测代码的一个很小的,很明确的功能是否正确。
2. 单元测试的具体表现:用于判断某个特定条件或场景下某个特定函数或方法的行为。
3. 单元测试的目的:为了证明某段代码的行为确实和开发者所期望的一致。
4. 单元测试的核心内涵:这个简单有效的技术就是为了令代码变得更加完美。
5. NUint中的断言Assert类的静态方法:
1)AreEquals
Assert.AreEqual(expected, actual[, string message])
//expected:期望值(通常是硬编码的);
//actual:被测试代码实际产生的值;
//message:一个可选消息,将会在发生错误时报告这个消息。
因计算机并不能精确地表示所有的浮点数,所以在比较浮点数时(float或double),需要指定一个额外的误差参数。
Assert.AreEqual(expected, actual, tolerance[, string messag e])
//tolerance:指定的误差,即只要精确到小数点后X位就足够了。
//例如:精确到小数点后4位
Assert.AreEqual(0.6667, 0.0/3.0, 0.0001);
2)IsNull
Assert.IsNull(object[, string message])
//是null
Assert.IsNotNull(object[, string message])
//非null
3)AreSame
Assert.AreSame(expected, actual[, string message])
//验证expected和actual两个参数是否引用一个相同的对象。
4)IsTrue
Assert.IsTrue(bool condition [, string message])
Assert.IsFalse(bool condition [, string message])
5)Fail
Assert.Fail([string message])
//使测试立即失败;这种断言通常被用于标记某个不应该被到达的分支,但实际中不常用。
6. 当有测试失败时,无论如何都不能给原有代码添加任何的新特性。
7. NUnit的框架
使用NUint框架的最小要求
1using NUint.Framework;2[TestFixture]3public class T estSimple 4{5[Test]6public void TestMethod() 7{8Assert.AreEqual(2, 4/2);9}10}
1)需要NUint.Framework的命名空间,项目中需要引用NUint.dll;
2)每个包含测试的类都必须带TestFixture属性标记,且这个类必须是public的。
3)测试类包含的所有带Test属性标记的public方法都会被
NUint自动执行。