使用 NUnit 工具来进行单元测试

首先在要创建一个单元测试的项目,通常在原有的解决方案中添加新项目, 在弹出的项目类型中选择单元测试,项目的命名一般情况下与解决方案的名称相同后加UnitTest

然后在项目中添加一个单元测试的类, 类的名称与要测试的类的名字相同,也是后缀加UnitTest, 在单元测试项目中添加引用   NUnit.Framework.dll, 而后在单元测试的类的头部添加引用  using NUnit.Framework;

在测试类的上部添加特性  [TestFixture] 表示: 要对这个类进行测试

然后创建一个测试方法, 测试方法的名字命名与测试类的命名相同, 就是在要测试的方法名后缀Test,在测试的方法上面要添加特性[Test] 表示的是: 这是个测试的方法,如果没有什么语法错误,对单元测试项目进行重新编译。

using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Demon;
using NUnit.Framework; namespace DemonUnitTest
{
/// <summary>
/// CalcuteTest 的摘要说明
/// </summary>
[TestFixture]
public class CalcuteTest
{ Calculate mycal = new Calculate (); [Test]
public void GetSumTest()
{
int a =4;
int b =6; int sum =mycal.GetSum(a,b); Assert.AreEqual(10,sum); } [Test]
public void GetResultTest()
{ int result = mycal.GetResult(5);
Assert.AreEqual(15, result);
}
}
}

打开 Nunit, 选择file --> open project  找到刚才单元测试项目中生成的 dll 文件, 选择确定。这样在 nunit 中就能看到里面的测试方法,对每一个测试方法进行运行,如果出现绿色,那么恭喜你,测试通过,如果出现红色的警告,则表示方法没有通过测试,可以根据测试的结果反馈信息来对编写的方法进行修改,直到能达到预期效果,也就是通过单元测试。

还有一种方法就是在项目中直接使用vs 自带的单元测试功能 一般在创建项目时,就会提示是否要添加单元测试项目, 默认的情况下,会创建一个与解决方案同名的后缀Test的单元测试项目。这种情况下,通过添加单元测试模板来添加单元测试类,与 NUnit不同的是, 要引用vs 自带的单元测试框架 using Microsoft.VisualStudio.TestTools.UnitTesting;

在单元测试的类上添加特性     [TestClass] 表示的是这是一个测试类 在测试的方法上添加特性     [TestMethod] 表示的是这是一个测试方法

测试方法的编写与 NUnit 方法相同,但是通过打断点,调试的方式来进行测试的

using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting; namespace DemonUnitTest
{
/// <summary>
/// CalcuteTest2 的摘要说明
/// </summary>
[TestClass]
public class CalcuteTest2
{
public CalcuteTest2()
{
//
//TODO: 在此处添加构造函数逻辑
//
} private TestContext testContextInstance; /// <summary>
///获取或设置测试上下文,该上下文提供
///有关当前测试运行及其功能的信息。
///</summary>
public TestContext TestContext
{
get
{
return testContextInstance;
}
set
{
testContextInstance = value;
}
} #region 附加测试特性
//
// 编写测试时,可以使用以下附加特性:
//
// 在运行类中的第一个测试之前使用 ClassInitialize 运行代码
// [ClassInitialize()]
// public static void MyClassInitialize(TestContext testContext) { }
//
// 在类中的所有测试都已运行之后使用 ClassCleanup 运行代码
// [ClassCleanup()]
// public static void MyClassCleanup() { }
//
// 在运行每个测试之前,使用 TestInitialize 来运行代码
// [TestInitialize()]
// public void MyTestInitialize() { }
//
// 在每个测试运行完之后,使用 TestCleanup 来运行代码
// [TestCleanup()]
// public void MyTestCleanup() { }
//
#endregion [TestMethod]
public void TestMethod1()
{
//
// TODO: 在此处添加测试逻辑
//
} Demon.Calculate mycal = new Demon.Calculate(); [TestMethod]
public void GetSumTest()
{
int a = 4;
int b = 6; int sum = mycal.GetSum(a, b); Assert.AreEqual(10, sum); }
}
}

总之不能为了通过单元测试而进行测试,或修改测试方案,这样即使通过了单元测试,但隐藏了方法的错误算法设计或逻辑处理,当在待定或着实际的场境下,问题还是会暴露的,所以应该严格对待单元测试,不能为了单元测试而测试。

单元测试工具NUnit的使用的更多相关文章

  1. 如何快速上手.net下单元测试工具NUnit?

    NUnit基本使用 准备知识: 读此博文需要了解单元测试基本概念及NUnit的的安装. 传送门:单元测试之道(使用NUnit) 1.常见的错误 当学习一个新东西时,先学习错误,是最快的方式. 1.1 ...

  2. 单元测试工具Nunit

    原文链接:http://blog.csdn.net/snowshinoy/article/details/6951352 调试 附加到: nunit-agent.exe进程:

  3. 在.NET开发中的单元测试工具之(1)——NUnit

    NUnit介绍 NUnit是一个专门针对于.NET来写的单元测试框架,它是xUnit体系中的一员,在xUnit体系中还有针对Java的JUnit和针对C++的CPPUnit,在开始的时候NUnit和x ...

  4. 在.NET开发中的单元测试工具之——NUnit

    NUnit介绍 NUnit是一个专门针对于.NET来写的单元测试框架,它是xUnit体系中的一员,在xUnit体系中还有针对Java的JUnit和针对C++的CPPUnit,在开始的时候NUnit和x ...

  5. 单元测试与Nunit的基本使用

    一.单元测试是什么 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证.对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,C# ...

  6. 单元测试工具之Xunit

    在.NET开发中的单元测试工具之——xUnit.Net  原始出处 http://zhoufoxcn.blog.51cto.com/792419/1172320 在上一篇<在.NET开发中的单元 ...

  7. 单元测试工具 SmokeTest

    .NET 程序集单元测试工具 SmokeTest Smoke Test(冒烟测试),也称Regression Test(回归测试),是对软件的安装和基本功能的测试.一般地我们使用脚本来实现Smoke ...

  8. 在.NET开发中的单元测试工具之(2)——xUnit.Net

    在上一篇<在.NET开发中的单元测试工具之(1)——NUnit>中讲述了如何使用NUnit在.NET开发中进行单元测试以及NUnit的一些缺点,今天将讲述如何使用xUnit.Net来进行单 ...

  9. 单元测试(一)-NUnit基础

    单元测试作为提高代码和软件质量的有效途径,其重要性和益处自不必多说,虽然我没有实践过TDD之类,但坚信单元测试的积极作用.作为一种开发方法,单元测试早在上世纪70年代就已经在Smalltalk语言被运 ...

随机推荐

  1. exit和return

    函数名: exit() 所在头文件:stdlib.h(如果是”VC6.0“的话头文件为:windows.h) 功 能: 关闭所有文件,终止正在执行的进程. exit(1)表示异常退出.这个1是返回给操 ...

  2. int类型转string类型c++

    前言 使用VS的过程中,经常会用到需要将int类型数据转换为字符串类型,便于显示信息等. 实现方法 c++11标准中的to_string函数,在VS安装文件的include文件中生成的只读文件,使用起 ...

  3. linux搜索命令之find和grep

    在使用linux时,经常需要进行文件查找,其中查找的命令主要有find和grep.两个命令是有区的. 区别:(1)find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访 ...

  4. ppt标题排版

  5. 磁盘 -> 硬盘 -> c盘 && 内存

    磁盘是计算机的外部存储器,分为两类,一类是硬盘,一类是软盘. (附:计算机的存储器有两类,一类是内部存储器(内存条是用半导体材料做成的),断电不会保存当前工作:一类是外部存储器,断了电也能可以保存.) ...

  6. MySQL Disk--NAND Flash原理

    ====================================================== NAND Flash最小存储单元: 写数据操作: 通过对控制闸(Control Gate) ...

  7. 时间操作(JavaScript版)—页面显示格式:年月日 上午下午 时分秒 星期

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/wangshuxuncom/article/details/35222531 <!DOCTYPE ...

  8. 【转】第六章、Linux 的文件权限与目录配置

    原文网址:http://vbird.dic.ksu.edu.tw/linux_basic/0210filepermission.php 最近更新日期:2009/08/18 Linux最优秀的地方之一, ...

  9. Microsoft Dynamics CRM service 创建,更新等操作时,注意写抛出异常时,抛出SoapException异常

    具体如下: using System.Web.Services.Protocols; try{ crmService.Update(procurementPlanEntity);//更新操作}catc ...

  10. opencv中的缩放函数

    图像处理里面缩放操作是比较常见的: 最近邻插值:类似简单映射的处理方式,目标图像w1,h1,原始图像w0,h0,则在目标图像上的点(x,y)的像素点实际对应原始图上(x*w0/w1,y*h0/h1)的 ...