NUnit入门篇

简介:
< DOCTYPE html PUBLIC -WCDTD XHTML TransitionalEN httpwwwworgTRxhtmlDTDxhtml-transitionaldtd>

一.打开VS2005
二.点击菜单“文件”->“新建项目”,打开“新建项目”对话框:在该对话框中,C#的“项目类型”命名为NUnitPerson
新建一个Person.cs,键入如下代码:

namespace NUnitPerson
{
    public class Person
    {
        private string pid = null;
        private string pname = null;

        public string id
        {
            get
            {
                return pid;
            }

            set
            {
                pid = value;
            }
        }

        public string name
        {
            get
            {
                return pname;
            }

            set
            {
                pname = value;
            }
        }
    }
}

三.再新建一个“项目类型”,命名为NUnitPersonTest
新建一个PersonTest,并键入如下代码(注意,你得引入NUnit.Framework和测试项目NUnitPerson)

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

namespace NUnitPersonTest
{
    [TestFixture]
    public class BookTest
    {
        Person person = null;

        [SetUp]
        public void Init()
        {
            Console.WriteLine("测试开始!");
            person = new Person ();
            Console.WriteLine("person对象被初始化!");
        }

        [Test]
        public void testId()
        {
            person .id = "001";/设置id属性的值为
           使用Assert查看id属性的值是否为
            Assert.AreEqual("001", person .id);
            Console.WriteLine("id属性被测试!");
        }

        [Test]
        public void testName()
        {
            person .name = "RONALDO";/设置name属性的值为RONALDO
           使用Assert查看name属性的值是否为BECKHAM,这是个必然出现错误的测试
            Assert.AreEqual("BECKHAM", person .name);
            Console.WriteLine("name属性被测试!");
        }

        [TearDown]
        public void Dispose()
        {
            Console.WriteLine("person对象将被清理!");
            person= null;
            Console.WriteLine("测试结束!");
        }
    }
}
编译以上项目

打开NUnit GUI 测试工具

NUnit入门篇 - netcorner - netcorner的博客
选择"文件"下的"打开项目",选择你刚刚写入的NUnitPersonTest所在目录的dll

选择PersonTest类,点击运行,即可看到测试结果,

NUnit入门篇 - netcorner - netcorner的博客
可以看到testName不错,testId是正常的

对测试用例的UnitPersonTest的语法介绍

TestFixture,用来标识要测试的用便,还有Init和Dispose这两个方法,并分别使用SetUp和TearDown属性来进行标识,前者在每个测试方法开始之前执行,多用来做初始化;后者在每个测试方法完成之后执行,多用来清理资源。注意,这两个方法的名称并没有什么限制,但必须用SetUp和TearDown属性进行标识。另外,NUnit还提供了TestFixtureSetUp和TestFixtureTearDown属性,功能与SetUp和TearDown类似,但前者是在所有用例执行之前做初始化、之后做清理,而后者是在每个用例执行之前做初始化、之后做清理。
下面简单介绍一下上边用到的静态类NUnit.Framework.Assert。该类主要包含20个方法:
1.AreEqual()和AreNotEqual()方法,用来查看两个对象的值是否相等或不等,与对象比较中使用的Equals()方法类似。
2.AreSame()和AreNotSame()方法,用来比较两个对象的引用是否相等或不等,类似于通过“Is”或“==”比较两个对象。
3.Contains()方法,用来查看对象是否在集合中,集合类型应与System.Collections.IList兼容。示例:
Dim o As New Object
Dim al As New ArrayList
al.Add(o)
Assert.Contains(o, al)
4.Greater()和Less()方法,用来比较两个数值的大小,前者相当于大于号(>),后者相当于小于号(<)。
5.IsInstanceOfType()和IsNotInstanceOfType()方法,用来判断对象是否兼容于指定类型。示例:
Dim t As Type = New Object().GetType
Dim s As String = ""
Assert.IsInstanceOfType(t, s)
由于Object是.net中所有类型的基类,String类型兼容于Object,因此这个示例是能够运行通过的。而下边这个示例运行将是失败的:
Dim t As Type = New ArrayList().GetType
Dim s As String = ""
Assert.IsInstanceOfType(t, s)
6.IsAssignableFrom()和IsNotAssignableFrom()方法,用来判断对象是否是指定类型的实例。示例:
Dim t As Type = New Object().GetType
Dim s As String = ""
Assert.IsAssignableFrom(t, s)
这个示例与之前的示例是一样的,但由于字符串s不是Object类型的,因此无法运行通过。而下边这个实例可以运行通过:
Dim t As Type = New String("").GetType
Dim s As String = ""
Assert.IsAssignableFrom(t, s)
7.IsFalse()和IsTrue()方法,用来查看变量是是否为false或true,如果IsFalse()查看的变量的值是false则测试成功,如果是true则失败,IsTrue()与之相反。
8.IsNull()和IsNotNull()方法,用来查看对象是否为空和不为空。
9.IsEmpty()和IsNotEmpty()方法,用来判断字符串或集合是否为空串或没有元素,其中集合类型应与ICollection兼容。
10.IsNaN()方法,用来判断指定的值是否不是数字。
11.Fail()方法,意为失败,用来抛出错误。我个人认为有两个用途:首先是在测试驱动开发中,由于测试用例都是在被测试的类之前编写,而写成时又不清楚其正确与否,此时就可以使用Fail方法抛出错误进行模拟;其次是抛出意外的错误,比如要测试的内容是从数据库中读取的数据是否正确,而导致错误的原因却是数据库连接失败。
12.Ignore()方法,意为忽略,用来忽略后续代码的执行,用途可以参考Fail()方法。
此外,NUnit还提供了一个专用于字符串的静态类NUnit.Framework. StringAssert,该类主要包含4个方法:
1.Contains()方法,用来查看指定的第二个字符串中是否包含了第一个字符串。
2.StartsWith ()和EndsWith ()方法,分别用来查看指定的第一个字符串是否位于第二个字符串的开头和结尾。
3.AreEqualIgnoringCase()方法,用来比较两个字符串是否相等

本文转自 netcorner 博客园博客,原文链接:http://www.cnblogs.com/netcorner/archive/2008/06/16/2912133.html  ,如需转载请自行联系原作者

相关文章
|
编解码 算法 搜索推荐
淘宝人生里的虚拟人像渲染技术
全程干货,淘宝人生里的虚拟人像是如何实现的?
淘宝人生里的虚拟人像渲染技术
|
XML 移动开发 API
微信支付开发(7) H5支付
关键字:微信支付 微信支付v3 H5支付 wap支付 prepay_id 作者:方倍工作室原文: http://www.cnblogs.com/txw1958/p/wxpayv3_h5.html    本文介绍微信支付下的H5支付实现流程。
3773 1
|
搜索推荐 前端开发 SEO
SEO需要了解的8大html标签
SEO需要了解的8大html标签
194 2
|
11月前
|
人工智能 API 数据库
Browser Use:开源 AI 浏览器助手,自动完成网页交互任务,支持多标签页管理、视觉识别和内容提取等功能
Browser Use 是一款专为大语言模型设计的智能浏览器工具,支持多标签页管理、视觉识别、内容提取等功能,并能记录和重复执行特定动作,适用于多种应用场景。
2973 0
Browser Use:开源 AI 浏览器助手,自动完成网页交互任务,支持多标签页管理、视觉识别和内容提取等功能
|
数据采集 Java Python
GitHub天花板!清华大佬纯手码的《python背记手册》火了!
根据5月份的TIOBE指数分析,Python几乎是Java的两倍,以目前的情况来看,Java想重回巅峰怕是遥遥无期,反倒是Python开始了霸榜之旅。 无论任何一门语言,都是需要不断的花时间,花精力去学习的,python也不例外,虽然很多人都在说python如何如何的简单,但并不意味着你可以随便学学敷衍了事。
|
JavaScript 前端开发
Vue学习之--------Vue中收集表单数据(使用v-model 实现双向数据绑定、代码实现)(2022/7/18)
这篇文章介绍了Vue中使用v-model实现表单数据收集的方法,包括基础知识、代码实例和测试效果,并提供了一些额外建议。
Vue学习之--------Vue中收集表单数据(使用v-model 实现双向数据绑定、代码实现)(2022/7/18)
|
数据可视化 Java
《IntelliJ IDEA 插件开发》第二节:开发摸鱼看书的侧边栏窗体
一、说明 二、需求目的 三、案例开发 1. 工程结构 2. 创建 UI 窗体 3. ToolWindow 工具框 4. Configurable 配置框 5. 配置 plugin.xml 四、插件测试 五、总结 六、系列推荐
1394 0
《IntelliJ IDEA 插件开发》第二节:开发摸鱼看书的侧边栏窗体
|
程序员 C# 开发框架
深入解析C#中的语法糖
本文将详细探讨C#编程语言中的“语法糖”概念,解释其含义、作用以及在日常编程实践中的常见例子。通过本文,读者将能够更深入地理解C#语言的灵活性和便捷性,并学会如何有效利用语法糖提高代码的可读性和开发效率。
|
Perl 容器 Kubernetes
从零开始入门 | Kubernetes 中的服务发现与负载均衡
作者 | 阿里巴巴技术专家  溪恒 一、需求来源 为什么需要服务发现 在 K8s 集群里面会通过 pod 去部署应用,与传统的应用部署不同,传统应用部署在给定的机器上面去部署,我们知道怎么去调用别的机器的 IP 地址。