NUnit单元测试使用实例

原创 2007年09月20日 15:42:00

1.新建.NET项目-->类库

2.添加引用  nunit.framework.dll

3.编写测试用例(Test Case)

 

using System;
using System.Collections.Generic;
using System.Text;
using NUnit.Framework;

namespace NUnitTest
{
    
//作者: 王文平
    
//日期: 2007-09-20
    
//描述: NUnit单元测试Demo
    /*
     * TDD的简介
     * 使用下面2个原则来定义TDD
     * 除非你有一个失败的自动测试,永远不要写一单行代码. 
     * 阻止重复
     * 第一个原则是显而易见的.在没有失败的自动测试下就不要写代码
     * 第二个原则说明了在一个程序中,不应该包含重复的代码.如果代码重复
     * /

    /*
     * TestFixture 属性
     *本属性标记一个类包含测试,当然setup和teardown方法可有可无.
     *做为一个测试的类,这个类还有一些限制 
     *必须是Public,否则NUnit看不到它的存在. 
     *它必须有一个缺省的构造函数,否则是NUnit不会构造它. 
     
*/

    [TestFixture]
    
public class NUnitExample
    {
        
private int a;
        
private int b;
        
//SetUp 属性
        
//初始化
        [SetUp]
        
public void InitializeOperands()
        {
            a 
= 1;
            b 
= 2;
        }

        
//Test属性用来标记一个类(已经标记为TestFixture)的某个方法是可以测试的.
        [Test]
        [Category(
"Numbers")]
        
public void AddTwoNumbers()
        {
            
int sum = a + b;
            Assert.AreEqual(sum, 
3);
        }
        [Test]
        [Category(
"Numbers")]
        
public void MultiplyTwoNumbers()
        {
            
int product = a * b;
            Assert.AreEqual(
2, product);
        }

        
//TearDown 属性
        
//清除


        
/*
         * ExpectedException 属性
         * 这里是一个验证这个假设的测试.有的时候,我们知道某些操作会有异常出现.
         * 例如, 在实例中增加除法,某个操作被0除,抛出的异常和.NET文档描述的一样.参看以下源代码 
         
*/

        [Test]
        [Category(
"Exception")]
        [ExpectedException(
typeof(System.DivideByZeroException))]
        
public void DivideByZero()
        {
            
int zero = 0;
            
int infinity = a / zero;
            Assert.Fail(
"Should have gotten an exception");
        }

        
//Ignore 属性
        
//保持测试,但又不运行
        [Test]
        [Category(
"Numbers")]
        [Ignore(
"Multiplication is ignored")]
        
public void MultiplyTwoNumbers2()
        {
            
int product = a * b;
            Assert.AreEqual(
3, product);
        }

        
//TestFixtureSetUp/TestFixtureTearDown 属性
        
//正如他们名字表明的一样,这些属性用来标记为整个test fixture初始化/释放资源方法一次的方法. 
        
//为所有test fixture的测试共享相同的数据库连接对象,我们可以写一个打开数据库连接的方法,标记为TestFixtureSetUp属性
        
//编写另外一个关闭数据库连接的方法,标记为TestFixtureTearDown属性


        
//Category 属性
        
//对于测试来说,你有的时候需要将之分类,此属性正好就是用来解决这个问题的。 
        
//你可以选择你需要运行的测试类目录,也可以选择除了这些目录之外的测试都可以运行。
        
//在命令行环境里 /include 和/exclude来实现。在GUI环境下,就更简单了,选择左边工作域里的Catagories Tab,选择Add和Remove既可以了。


        
//Explicit属性 
        
//本属性忽略一个test和test fixture,直到它们显式的选择执行。如果test和test fixture在执行的过程中被发现,就忽略他们。
        
//所以,这样一来进度条显示为黄色,因为有test或test fixture忽略了。
        
//原因是Ingore属性忽略了某个test或test fixture,那么他们你再想调用执行是不可能的。那么万一有一天我想调用被忽略的test或test fixture怎么办,就用Explicit属性了。我想这就是其中的原因吧。
        [Test, Explicit]
        [Category(
"Exception")]
        [ExpectedException(
typeof(DivideByZeroException))]
        
public void DivideByZero2()
        {
            
int zero = 0;
            
int infinity = a / zero;
            Assert.Fail(
"Should have gotten an exception");
        }

        
//Expected Exception属性 
        
//期望在运行时抛出一个期望的异常,如果是,则测试通过,否则不通过。
        
//在本测试中,应该抛出DivideByZeroException,但是期望的是InvalidOperationException,所以不能通过。
        
//如果我们将[ExpectedException(typeof(InvalidOperationException))]改为[ExpectedException(typeof(DivideByZeroException))],本测试通过。
        [Test]
        [Category(
"Exception")]
        [ExpectedException(
typeof(DivideByZeroException))]
        
public void ExpectAnException()
        {
            
int zero = 0;
            
int infinity = a / zero;
            Assert.Fail(
"Should have gotten an exception");
        }

    }   
}

使用Nunit做单元测试

参加完自考、软考,对单元测试都是概念上的理解,这篇博文主要是从实践上,讲解一下单元测试如何实现,使用什么工具,以及简单的实例讲解。     一、单元测试     单元测试,是开发者编写的一小段...
  • zjx86320
  • zjx86320
  • 2015年02月28日 15:42
  • 1422

NUnit单元测试

单元测试对程序员来说是非常重要的一门技术,但是在实际编程中却往往被程序员所忽视。微软的VS开发工具为我们提供了强大的单元测试环境,在VS当中可以直接对类库项目进行测试,极大的方便了程序员的自我纠错能力...
  • guwei4037
  • guwei4037
  • 2014年02月16日 00:38
  • 3854

VS2013下单元进行单元测试的简单方法

打开vs2013下的“扩展和更新”里搜索"Unit Test Generator"安装更新插件 在我们编写的代码方法体内右键菜单选择“Generate Unit Test” 就可以选择 注...
  • qbook
  • qbook
  • 2015年02月11日 09:27
  • 7243

如何使用Nunit3在VS2017中进行.NET Core和.NET Standard项目单元测试

VSIX(Visual Studio扩展)当前还不支持.NET Core和.NET Standard项目的单元测试,所以需要在项目中使用NuGet安装支持nunit测试的扩展包。 打开VS2017...
  • loongsking
  • loongsking
  • 2017年11月14日 12:25
  • 409

NUnit.Framework在VS2015中如何进行单元测试

微软在VS2015中加入了自动化生成测试功能, 在需要测试的源文件的公共方法中右键既可以创建单元测试。 不过需要注意的是,要在公共方法中创建,否则会提示这个错误 如下是自动化单元测试界面,可以...
  • loongsking
  • loongsking
  • 2017年01月16日 11:55
  • 3015

单元测试——Using NUnit

在.NET平台下进行单元测试,我们首先想到的应该是NUnit。NUnit是一个专门针对.NET的单元测试框架,也是.NET平台上使用得最为广泛的测试框架之一。...
  • u010164936
  • u010164936
  • 2015年03月07日 21:21
  • 650

NUnit Assert简介

              Assert class提供了一系列的static methods,让你可以用来验证主要程序的结果与预期的是否一样。             常用的assert断言有:  ...
  • you_laner
  • you_laner
  • 2006年07月13日 10:15
  • 2869

使用NUnit进行单元测试——断言篇(Assertions)

断言介绍 在任何一个xUnit框架中,断言都是单元测试的核心,NUnit也不例外。NUnit提供了一组丰富的断言,这些断言作为Assert类的静态方法。 如果一个断言失败,方法的调用不会返...
  • DreamOfFreedom
  • DreamOfFreedom
  • 2011年12月24日 16:25
  • 561

c#中使用nunit支持数据库单元测试

首先添加引用,在.net组件中加入System.Enterprise Services.测试程序源代码:using System;using NUnit.Framework;using System....
  • nuaalfm
  • nuaalfm
  • 2005年04月25日 23:59
  • 1308

vs2013添加单元测试

vs2013添加单元测试 要运行 vs2013单元测试 ,那么打开VS2013选择 工具 (菜单) -扩展和更新,搜索并安装Unit Test Generator,如下图。     Install U...
  • huwei2003
  • huwei2003
  • 2016年05月21日 11:24
  • 2604
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:NUnit单元测试使用实例
举报原因:
原因补充:

(最多只允许输入30个字)