Nunit是.NET平台单元测试框架,其是从Junit发展而来,它强大之处是支持所有的.NET语言。

Nunit的下载地址:http://www.nunit.org

介绍1:

布局:

  • 左面:我们写的每一个单元测试
  • 右边:测试进度条
  • 测试执行状态:进度条的颜色来反映
    1. 绿色:所有测试案例运行成功
    2. 黄色:某些测试被忽略,但没有失败
    3. 红色:有测试案例没有成功执行

文本窗口标签:

Errors and Failures:显示失败的测试

Tests Not Run:显示没有得到执行的测试

Console.Error:显示运行测试产生的错误消息。这些此消息是应用程序代码使用Console.Error输出流输出的

Console.Out:显示运行测试打印到Console.Error输出流的文本消息

底部状态条:表示当前运行的测试的状态

Ready:准备就绪

Running:测试执行中(Running: test-name)

Completed:所有测试完成时

Test Cases:说明加载的程序集中测试案例的总个数,即测试树里叶子节点的个数

Tests Run:已经完成的测试个数

Failures:到目前为止,所有测试中失败的个数

Time:测试运行时间(以秒计)

介绍2:

常用属性

TestFixture属性:标记该类包含要测试的方法,即为测试类,对该测试类的限制:

  1. 访问方式必须是Public,否则NUnit看不到它的存在
  2. 必须有一个缺省的构造函数,否则是NUnit不会构造它
  3. 构造函数应该没有任何副作用,因为NUnit在运行时经常会构造这个类多次

Test属性:标记某个类(该类已经被标记为TestFixture)的某个方法是可以测试的,对该测试方法的限制:

  1. 访问方式必须是Public
  2. 不能有参数
  3. 不能有返回值

介绍3:

使用

首先,安装Nunit,安装后的运行文件是"nunit.exe", 其目录如 C:\Program Files (x86)\NUnit 2.6.3\bin

其次,新建项目:

1.打开Visual Studio

2.创建一个类库项目

3.在类库项目中添加对“nunit.framework.dll”的引用, 该类库安装位置如:C:\Program Files (x86)\NUnit 2.6.3\bin\framework

4.添加类文件, 在类文件中加入命名空间"using NUnit.Framework;"

5.添加属性(TestFixtrue)到类和(Test)到测试方法,如下:

完成后的类文件如下图:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NUnit.Framework; namespace Demo_Nunit
{
[TestFixture]
public class Class1
{
[Test]
public void Add()
{
int a = ;
int b = ;
int sum = a + b;
Assert.AreEqual(sum, );
} [Test]
public void Multiply()
{
int a = ;
int b = ;
int multi = a * b;
Assert.AreEqual(multi, );
} [Test]
[Ignore("This is ignored")]
public void Divid()
{ }
}
}

运行准备
1.点击类库项目,右击,属性

2.选择Debug选项卡,在启动选项(Start Action)中,设置启动外部项目,选择"C:\Program Files (x86)\NUnit 2.6.3\bin\nunit.exe"

3.编译项目,并启动

4.验证NUnit启动了, 选择File, Open Project, 选择编译完成的类库文件。

点击要执行的测试, 点击Run按钮。

介绍4:

断言 Assert

使用Assert(断言)进行比较,是一个类,包括的静态方法有:

1. Assert.AreEqual(object expected, object actual[,string message])

verifies that two objects are equal if they are not equal, an NUnit.Framwork.AssertionException is thrown

参数说明:

expected:期望值(通常是硬编码的)

actual:被测试代码实际产生的值、

message:一个可选消息,将会在发生错误时报告这个消息

比较浮点数(float或double)时,要指定一个额外的误差参数

2. Assert.AreEqual(object expected, object actual, float tolerance[, string message])

参数说明:

tolerance:指定的误差,即精确到小数点后X位         例如:精确到小数点后4位,Assert.AreEqual(0.6667, 2.0/3, 0.0001);

3. Assert.AreNotEqual(object expected, object actual)

asserts that two objects are not equal

4. Assert.AreSame(object expected, object actual[, string message])

asserts that two objects refer to the same object

验证expected和actual两个参数是否引用一个相同的对象

5. Assert.AreNotSame(object expected, object actual[, string message])

asserts that two objects do refer to the same object

6. Assert.IsNull(object[, string message])

7. Assert.IsNotNull(object[, string message])

8. Assert.IsTrue(bool condition [, string message])

9. Assert.IsFalse(bool condition [, string message])

10. Assert.Fail([string message])

使测试立即失败

该断言被用于标记某个不应被到达的分支,实际不常用

Nunit 使用介绍的更多相关文章

  1. Nunit与Xunit介绍

    Nunit安装 首先说下,nunit2.X与3.X版本需要安装不同的vs扩展. nunit2.x安装 安装如上3个,辅助创建nunit测试项目与在vs中运行单元测试用例 . 1.Nunit2 Test ...

  2. (二)NUnit单元测试心得

    现在接着上次说到的内容,如何在项目中进行单元测试.由于做了一些调整,我上次发的内容,我这次也会重新发一次,请认真看看. 一.软件开发过程中存在的问题(没有使用单元测试的情况下) 难于定位bug的位置 ...

  3. C#单元测试:NUnit详细使用方法

    1. TDD的简介 首先什么是TDD呢?Kent Beck在他的<<测试驱动开发 >>(Addison-Wesley Professional,2003)一书中,使用下面2个原 ...

  4. 单元测试之NUnit一

    NUnit 分三篇文章介绍,入门者可阅读文章,有基础者直接参考官方文档.初次写博客,望大家指点. 导航: 单元测试之NUnit一 单元测试之NUnit二 单元测试之NUnit三 NUnit是什么? N ...

  5. 使用NUnit为游戏项目编写高质量单元测试的思考

    0x00 单元测试Pro & Con 最近尝试在我参与的游戏项目中引入TDD(测试驱动开发)的开发模式,因此单元测试便变得十分必要.这篇博客就来聊一聊这段时间的感悟和想法.由于游戏开发和传统软 ...

  6. 舍弃Nunit拥抱Xunit

    前言 今天与同事在讨论.Net下测试框架的时候,说到NUnit等大多数测试框架的SetUp以及TearDown方法并不是显得那么完美,所以在公司内部的项目中采用了Xunit框架.那么究竟是什么样的原因 ...

  7. Paket 介绍

    在国外.NET社区有一个很火的话题是Packet(https://fsprojects.github.io/Paket/index.html ),它本质上是Nuget 之外的另一种方式管理.NET项目 ...

  8. Jenkins学习三:介绍一些Jenkins的常用功能

    Jenkins其实就是一个工具,这个工具的作用就是调用各种其他的工具来达成你的目的. 1.备份.迁移.恢复jenkins 首先找到JENKINS_HOME,因为Jenkins的所有的数据都是以文件的形 ...

  9. NHibernate简单使用介绍

    1.在数据库中新建表格,并插入记录,SQL如下: USE WFC_DB GO create table Students ( Id ,) not null, Name ), Age int, Scor ...

随机推荐

  1. Linux下lzop命令安装

    [root@xd502djj ~]# yum install lzop Loaded plugins: fastestmirror Determining fastest mirrors * base ...

  2. linux下git的安装和使用(转)

    转自:http://www.cnblogs.com/sunada2005/archive/2013/06/06/3121098.html 最近在使用github,感觉不错.在windows下,可使用g ...

  3. 转载 Javascript继承两种形式详解

    一直想对Javascript再次做一些总结,正好最近自己写了一个小型Js UI库,总结了一下Js的继承机制,在网上也看了一些前辈们博客里的总结,感觉分析不是特别全面.这里仅仅是把自己的学习体会拿出来分 ...

  4. PHP基本知识收集

    1.符号“@”的作用 @是可以屏蔽函数执行过程中遇到问题而产生的一些错误.警告信息,这样用户就看不到程序的出错信息.这样除了用户界面会友好一些外,更重要的是安全性,因为屏蔽了出错文件的路径等信息. 2 ...

  5. sed 替换

    sed -i 's/i=0/i=2/g' test2.sh -i 在当前文档替换 g 替换所有文档 sed -i '3s/cccc/ccccc/' a.txt 将第三行的 cccc 替换成 ccccc ...

  6. 使用Lucene.Net管理索引实现搜索

    之前使用一直是没有问题的,只到今天发现删除的时候无法删除,增加的时候却一直在增加,导致搜索的时候可以搜出来很多相同的结果. 小猪决定趁今天这个机会好好的把这个问题给解决了. private void ...

  7. [CSS]三层嵌套的滑动门

    原理: 最外层放水平平铺的背景,第二层放左边,第三层放右边,注意这个做法背景图不能透明 结构: <div class="module-title"> <span ...

  8. iOS只执行一次的方法

    IOS开发(64)之GCD任务最多只执行一次 1 前言 使用 dispatch_once 函数 在 APP 的生命周期内来保证你想确保每段代码只执行一次,即使它在代码的不同地方多次调用(比如单例的初始 ...

  9. NOIP2005 等价表达式 解题报告

    明明进了中学之后,学到了代数表达式.有一天,他碰到一个很麻烦的选择题.这个题目的题干中首先给出了一个代数表达式,然后列出了若干选项,每个选项也是一个代数表达式,题目的要求是判断选项中哪些代数表达式是和 ...

  10. 关于HashMap中的负载因子

    这两天在看HashMap的时候,被负载因子float loadFactor搞得很晕,经过一天的研究,最后理出了自己的一点个人见解. 在HashMap的底层存在着一个名字为table的Entry数组,在 ...