- 热门文章:
- · ASP.NET中的STREAMREADER对象总结
- · ASP.NET中的STREAMREADER对象总结
- · ASP.NET中的FILESTREAM对象总结
- · ASP.NET中的FILE对象总结
- · asp.net中常用的一些小技巧
- · DataGrid删除确认及Item颜色交替
- · asp.net生成缩略图
- · 设计模式之单件模式(Singleton Pattern )
- · 设计模式之简单工厂模式(Simple Factory Pattern)
- · 如何在asp.net页面上放置的控件上实现左右键菜单,同时对之操作(2)
- · 设计模式之观察者模式(Observer Pattern)(二)
- · 设计模式之观察者模式(Observer Pattern)(一)
上一篇:如何重新设置DataSet中的DataTable对象 >>
用NUnit2.1简单实现.net的测试驱动开发(TDD)
下面的例子很简单,就是实现两个整数的四则运算,TDD提倡测试优先,即先写测试用例,再写运行代码,刚下了个NUnit2.1,迫不及待的试了试……
1最初的测试用例
using System;
using NUnit.Framework;
namespace netshop
{
/// <summary>
/// 四则运算TestCls测试用例
/// Edit by spgoal
/// </summary>
[TestFixture]
public class TestCase
{
public TestCase()
{
}
private TestCls tc;
[SetUp]
public void setup()
{
tc=new TestCls();
}
[Test]
public void testAdd()
{
Assert.AreEqual(10,tc.Add(5,5));
Assert.AreEqual(7,tc.Add(3,4));
}
[Test]
public void testSub()
{
Assert.AreEqual(1,tc.Sub(5,4));
}
[Test]
public void testMul()
{
Assert.AreEqual(10,tc.Mul(2,5));
}
[Test]
public void testDiv()
{
Assert.AreEqual(2,tc.Div(10,5));
}
}
}
2 编译这个测试用例,理所当然的是通不过的,因为TestCls类未建立,于是建立该类,不必多说,看代码:
using System;
namespace netshop
{
/// <summary>
/// 四则运算的简单例子
/// </summary>
public class TestCls
{
public TestCls()
{
}
//加法
public int Add(int a,int b)
{
return 0;
}
//减法
public int Sub(int a,int b)
{
return 0;
}
//乘法
public int Mul(int a,int b)
{
return 0;
}
//除法
public double Div(int a,int b)
{
return 0;
}
}
}
这时编译通过,但由于里面的方法没实现,所以所有测试用例都失败。
(加载测试用例的方法是:先运行Nunit-Gui V2.1程序,然后在菜单file—open—选择测试用例所在工程目录的bin目录下的dll文件。)
3 于是编写加减乘除四个函数的实现:
using System;
namespace netshop
{
/// <summary>
/// 四则运算的简单例子
/// </summary>
public class TestCls
{
public TestCls()
{
}
//加法
public int Add(int a,int b)
{
return a+b;
}
//减法
public int Sub(int a,int b)
{
return a-b;
}
//乘法
public int Mul(int a,int b)
{
return a*b;
}
//除法
public double Div(int a,int b)
{
return a/b;
}
}
}
这时测试通过了!
4 寻找令测试失败的测试用例
想想似乎漏了一些可以使程序出错的测试用例,想到了吧?就是除数为零的情况,于是修改testDiv测试用例
[Test]
public void testDiv()
{
Assert.AreEqual(2,tc.Div(10,5));
Assert.AreEqual(0,tc.Div(10,0));//除于0的情况
}
果然,运行Nunit,出错了^_^ (这人有问题,出错了还笑-_-b)
于是修改TestCls类代码
//除法
public double Div(int a,int b)
{
if(b!=0)
{
return a/b;
}
else
{
return 0;
}
}
编译后,再运行Nunit,全部通过!
5 总结
这只是一个简单例子,因为以前用JUnit觉得还挺好用,于是想试试.net的Nunit是否好用,果然也不差:)测试优先只是测试驱动开发的一部分内容,还有重构等步骤,所以本文的题目有些名不副实,请大家多多包涵。
6 相关资料
NUnit下载地址: http://www.nunit.org/files/nunit-v21/Nunit-V2.1.4.msi
相关中文文章有:
[1]NUnit Cookbook(.net单元测试工具) http://www.csdn.net/develop/Read_Article.asp?Id=14908
[2] 在.NET环境中使用单元测试工具NUnit http://www.csdn.net/develop/Read_Article.asp?Id=22482
[3] NUnit快速入门 http://www.csdn.net/develop/Read_Article.asp?Id=23530
http://www.csdn.net/develop/Read_Article.asp?Id=23531
[4] NUnit 在VS.NET 2003上的插件 http://www.csdn.net/develop/Read_Article.asp?Id=26568
下一篇:ASP.NET中的STREAMREADER对象总结 >>
相关文章:
- · 1. 一个类似于Calendar日期控件,不用再刷新页面。
- · 一个完美的日期控件 + 一个用脚本断判日期型的方法(1)
- · 使用DataGrid动态绑定DropDownList
- · .NET 1.1中预编译ASP.NET页面实现原理浅析 [1] 自动预编译机制浅析
- · 利用ASP.NET服务器端自定义控件实现XML文件中还原表单
- · .NET概观
- · ASP.NET中的Http Handles
- · Asp.net性能优化总结(二)
- · 一个非常实用的Base64类
- · 在asp.net中为Web用户控件添加属性和事件
- · 使用.NET实现断点续传(HTTP)
- · .NET 脚本(二)
- · .NET 脚本
- · ASP.NET分页组件更新版本
- · 一种快速存取选择条目的方案(Asp.Net+C#)
- · Asp.Net(C#)+Sql Server三层架构下数据存取方案(五)
- · Asp.Net(C#)+Sql Server三层架构下数据存取方案(四)
- · Asp.Net(C#)+Sql Server三层架构下数据存取方案(三)
- · Asp.Net(C#)+Sql Server三层架构下数据存取方案(二)
- · Asp.Net(C#)+Sql Server三层架构下数据存取方案(一)
- · 在asp.net中使用excel模板
- · 关于ASPNET在IIS一些问题的经验总结
- · 认识Whidbey
- · 小程序构成大项目之——分页显示
- · ASP.NET 数据库缓存依赖
- · Global.asax 和 HttpApplication 类
- · 办公自动化系统公文归档代码
- · Asp.net性能优化总结(一)
- · 如何在DataGrid里面产生滚动条而不滚动题头
- · Whidbey中客户端回调机制(三)
- · Whidbey中客户端回调机制(二)
- · Whidbey中客户端回调机制(一)
- · ASP.NET分页组件 0.1.0
- · INI文件的操作(ASP.NET+C#)
- · Asp.net+Xml开发网络硬盘
- · ASP.NET高级应用(3)
- · ASP.NET高级应用(2)
- · ASP.NET高级应用(1)
