单元测试——NUnit测试简单实例

一、测试准备工作:NUnit的下载及安装

http://blog.csdn.net/wangqingbo0829/article/details/43975243

二、流程:

(1)存在一个已实现的“待测项目”,例:CountFunction;

(2)新建一个测试项目最好以“待测项目名称.Test”命名,例:CountFunction.Test;

(3)添加对待测项目的引用(步骤:①在“添加引用”处添加;②导入命名空间);

(4)添加引用nunit.framework;

(5)编写测试用例

三、实施测试

1. 加、减、乘、除这四则运算的实现

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CountFunction
{
    //加、减、乘、除 运算实例
    public class Methods
    {
        //控制台应用程序,程序入口
        static void Main(string[] args)
        {
        }

        //无参构造函数
        public Methods(){ }

        #region 加、减、乘、除 运算实现

		 /// <summary>
         /// 加法
         /// </summary>
         public Double add(Double a, Double b)
         {
             return a + b;
         } 	  

		/// <summary>
        /// 减法
        /// </summary>
        public int subtract(int Minuend, int Subtrahend)
        {
            //被减数-减数
            return Minuend - Subtrahend;
        } 

		/// <summary>
        /// 乘法
        /// </summary>
        public int multiply(int a, int b)
        {
            return a * b;
        } 

        /// <summary>
        /// 除法
        /// </summary>
        public double division(double dividend, double divisor)
        {
            if (divisor == 0)
            {
                Console.WriteLine("除数不能为0,算式无意义!");
                return 0;
            }
            else
            {
                return dividend / divisor;
            }
        }

        #endregion
    }
}

2. 编写测试用例

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NUnit.Framework;				//导入命名空间
using CountFunction; 				//导入命名空间

namespace CountFunction.Tests
{
    [TestFixture]   //关键字
    public class ProgramTester
    {

        //1.1 必须有[Test]作为标识;
        [Test]      //关键字
        //1.2 访问权限必须为Public,必须无返回值void
        public void TestAdd()  //加法1
        {
            //实例化 生成 对象
            Methods addOne = new Methods();

            //利用测试数据,对方法进行测试
            double result = addOne.add(1, 2);

             //1.3 设置断言“3”为expected期望值;“result”为actual真实值。
            Assert.AreEqual(3, result);
        }

        //[Test]可扩展写成[Test(Description="")]对本测试进行简单描述
        [Test(Description = "加法Add()测试")]
        public void TestSubtract()  //减法
        {
            Methods subtractOne = new Methods();
            int result = subtractOne.subtract(2, 1);
            Assert.AreEqual(1, result);
        }

        [Test]
        public void TestMutiply()   //乘法
        {
            Methods mutiplyOne = new Methods();
            int result = mutiplyOne.multiply(1, 2);
            Assert.AreEqual(2, result);
        }

        [Test]
        public void TestDivision1()  //除法
        {
            Methods methodsOne = new Methods();
            //5为被除数,2为除数
            double result = methodsOne.division(5, 2);
            Assert.AreEqual(2.5, result);
        }

        [Test]
        public void TestDivision2()  //除法
        {
            Methods methodsTwo = new Methods();
            //程序运行,弹出提示信息“除数不能为0,算式无意义!”
            double result = methodsTwo.division(5, 0);
            Assert.AreEqual(0, result);
        }

    }
}

3. 测试结果展示图

4.  本文只用了一个简单的断言Assert.AreEqual(expected,actual),expected为期望值,actual为真实值。

然而,断言有很多种,浏览一下,将常用的列入表中,便于日后参见:


断言类型


说明


example


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


验证两个对象是否相等


Assert.AreEqual(2, 1+1)


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


验证两个引用是否指向同意对象


object expected = new object();

object actual = expected;

Assert.AreSame(expected, actual)


Assert.IsFalse(bool)


验证bool值是否为false


Assert.IsFalse(false)


Assert.IsTrue(bool)


验证bool值是否为true


Assert.IsTrue(true)


Assert.IsNotNull(object)


验证对象是否不为null


Assert.IsNotNull(new object())


Assert.IsNull(object)


验证对象是否为null


Assert.IsNull(null);

详细的断言介绍:http://blog.csdn.net/newgrammer/article/details/932028

很值得参考的资料:http://blog.163.com/[email protected]/blog/static/115244882201082731110654/

四、测试扩展

在项目中,功能的实现,常常需要与其他版块交互,而如果其他版块尚未开发完成,或其他版块存在错误,使得当下版块无法运行、测试。一个小对象Mock很好地解决了这个问题而且对它的使用很简单。——下篇博客,将对Mock的使用做介绍。

时间: 2024-10-10 11:55:06

单元测试——NUnit测试简单实例的相关文章

Nunit测试工具使用实例

前言: 本文主要是介绍了Nunit的基本使用,其中参详了很多已有的文章,由于最近要使用其进行测试,所以对网上的文章做了下整理,同时加入了一些自己的实践. NUnit的属性 TestFixture 它标记一个类包含测试,申明该类是用来测试的.一般用在class的定义之前: Test 一般是放在method之前,表示对该方法的测试,中添加Description参数可以给我们测试的功能添加描述信息 TestCase(arguments) 属性标记有参数无返值方法为测试方法(泛型方法一样标记),想要多次

vs2010中使用Nunit测试c#代码结果的正确性

http://www.nunit.org/index.php?p=download 上面地址下载,有安装版的,有直接解压版的,只有里面的nunit.framewor.dll就可以做简单的测试了. 安装版的路径默认为:C:\Program Files \NUnit 2.6\bin\framework\nunit.framewor.dll 从vs2010中直接下载安装插件: 安装完后提示重启vs,然后就可以打开用了,在视图中可以打开: 然后写好测试代码之后,就能够看到结果,不对的话会有相应的错误..

Spring IOC 方式结合TESTGN测试用例,测试简单java的命令模式

java命令模式: 可以命令("请求")封装成一个对象,一个命令对象通过在特定的接收着上绑定一组动作来封装一个请求.命令对象直接把执行动作和接收者包进对象中,只对外暴露出执行方法的的接口,从而简单的达到动作的请求者和动作的执行者解耦的目的. 下面用一个简单的实例测试简单的命令模式,同时采用spring ioc的方式+testNG的测试方式,实现遥控器的遥控开灯的命令模式实现和测试. 1.建立命令接口,包含执行方法,命令对象必须要实现的,执行方法就是暴露的接口方法,提供于接收者调用. p

cxf方式实现WebService的简单实例

cxf实现WebService的发布和调用简单实例. 1.准备工作:下载cxf  http://cxf.apache.org/download.html lib文件下的WHICH_JARS文件列出了各用途下所需的jar包. bin目录下存放运行文件. 2.服务端:先新建接口和相关的实现类.发布的服务是接口的方式. 代码如下 1 package com.liujf; 2 3 import javax.jws.WebParam; 4 import javax.jws.WebService; 5 6

【SSH进阶之路】Hiberante3搭建开发环境+简单实例(二)

Hibernate是非常典型的持久层框架,持久化的思想是非常值得我们学习和研究的.这篇博文,我们主要以实例的形式学习Hibernate,不深究Hibernate的思想和原理,否则,一味追求,苦学思想和原理,到最后可能什么也学不会,从实践入手,熟能生巧,思想和原理自然而然领悟. 上篇博文:[SSH进阶之路]Hibernate基本原理,我们介绍了Hibernate的基本概念.Hibernate的核心以及Hibernate的执行原理,可以很好帮助我们认识Hibernate,再看这篇博客之前,请先回顾上

Unity 单元测试(NUnit,UnityTestTools)

在软件开发中单元测试是非常重要的一个环节, =.=盘子脸去了几家公司都没有单元测试这个概念. 我们的系统虽然从代码看上是分离的, 在多数情况下都需要依赖于其他模块来运行.(单元测试部分内容教我解决这个问题.) 虽然学习了单元测试,但我相信实际过程中使用不到了. 接下来我稍微介绍下Unity如何进行单元测试.(推荐书籍"单元测试的艺术第二版")   为什么要使用单元测试: 1. 我们可以从单元测试入口-> 我们编写的游戏模块 (而不是直接在Unity运行进入我们的模块) 2. 在一

当文本框失去焦点即进行表单验证简单实例

当文本框失去焦点即进行表单验证简单实例:不少的表单验证都有这样的功能,就是当鼠标焦点离开文本框的时候,即刻进行合法性验证,下面就通过一个实例简单介绍一下如何实现此功能,代码实例如下: <script type="text/javascript"> function onblurs(){ if(myform.name.value==""){ alert("姓名不得为空!"); } else if(myform.address.value

编程实现哈希存储算法的简单实例

编程实现哈希存储算法的简单实现实例. 通过编写一个简单的哈希实例来加强对哈希算法的理解.下面实例包括存储与查找算法.拉链法解决冲突问题. 如果时间长了对哈希算法的理论知识不够了解,可以先阅读前面转载的两篇文档: 字符串哈希到整数函数,算法:http://blog.csdn.net/hzhsan/article/details/25552153 Hash算法冲突解决方法分析:http://blog.csdn.net/hzhsan/article/details/25555127 // 假设现在要实

C# 一个WCF简单实例

C# 一个WCF简单实例 作者: 字体:[增加 减小] 类型:转载 时间:2012-10-27我要评论 以订票为例简单应用wcf程序,需要的朋友可以参考下 WCF实例(带步骤) 复制代码代码如下: <xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" /> 本篇转自百度文档,自己试过,确实可以用. 以订票为例简单应用wcf 新建一个wcf服务应用程序 在IServi