简单来说,单元测试就是局部测试,即是对项目中的某个静态类测试、静态方法测试、类的实例化测试以及类的方法测试。当你有一个具体的项目时你可以通过运行查看结果的方式进行测试,但当你只有一个类而没有完整的项目时便会很麻烦,单元测试则可以解决这种问题。单元测试有两种方法,一个是NUnit,另一个是微软在VS提供的单元测试,这个会相对复杂但更全面,我是在网上结合多个资料学习和总结的,会比较基础,希望对看到的你有些许帮助,这里用两种方法对简单的例子进行测试。
一、使用Nunit进行单元测试
1、下载Nunit,地址为:http://www.nunit.org/index.php?p=download
2、下载Visual Nunit 2010,地址为:http://visualstudiogallery.msdn.microsoft.com/c8164c71-0836-4471-80ce-633383031099
3、创建项目并测试
1.VS2010中新建一个项目,由于我们只需要对稍后创建的类进行测试,与创什么项目无关,所以你可以创建窗体应用程序或Web应用程序的项目等,这里我创的是控制台应用程序,为了方便查看,我把项目名称取为:使用Nunit进行单元测试
2.在解决方案资源管理器中的引用上右键,选择添加引用,找到并添加步骤1中下载的Nunit中的nunit.framework.dll文件(默认安装时路径为:C:\Program Files \NUnit 2.6\bin\framework\nunit.framewor.dll)。
3.编写一个普通的类,后面我们将会对该类进行测试。右键解决方案资源管理器中的项目名称->添加->类,将类名改为SimpleClass,代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 使用Nunit进行单元测试
{
public class SimpleClass
{
/// <summary>
/// 除法运算
/// </summary>
public int Division(int num1,int num2)
{
return num1 / num2;
}
}
}
4.普通类编写好后,我们现在再创建一个测试类。右键解决方案资源管理器中的项目名称->添加->类,将类名改为TestClass,代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NUnit.Framework;//添加命名空间
namespace 使用Nunit进行单元测试
{
[TestFixture]//代表用于测试的类
public class TestClass
{
/// <summary>
/// 模拟用正常数据进行测试
/// </summary>
[Test]//代表测试用例
public void DivisionTestNatural()
{
var simpleClass = new SimpleClass();
var result = simpleClass.Division(10, 5);//调用SimpleClass类中的除法运算,用10除以5
Assert.AreEqual(2, result);//设置测试的期望值为2,实际值为result,若实际值不等于期望值时即测试出错
}
/// <summary>
/// 模拟用异常数据进行测试
/// </summary>
[Test]
public void DivisionTestNoNatural()
{
var simpleClass = new SimpleClass();
var result = simpleClass.Division(10, 5);
Assert.AreEqual(3, result);
}
}
}
5.快捷键Ctrl+F5运行项目(网上的资料写的是生成项目,但这么做的话如果你测试过一个类之后又新建了一个类要进行测试,你会发现找在Visual Nunit中找不到你新创建的类,如果这里你看不懂,不过做完项目后你就会明白)。选择视图->其他窗口->Visual Nunit(我查找资料时别人的资料说Ctrl+F7是快捷键,不过我试了没效。如果在其他窗口中找不到Visual Nunit则将VS关闭后重新打开),在Project、Namespace、Fixture中选择对应项(当你在前文中像我所说的创建第二个测试类之后只是生成项目而没有使用Ctrl+F5运行项目,你会发现你在Fixture中找不到你新创建的测试类),最后点击Run按钮。
二、使用vs进行单元测试
待写。。。
原文:http://www.cnblogs.com/xinxinboke/p/4041679.html