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()方法,用来比较两个字符串是否相等

你可能感兴趣的:(it)