手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>delphi>列表

NUnit学习笔记 Delphi 2006篇

来源:互联网 作者:西部数码 时间:2008-04-09
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

  至此,用于测试的类编写完成了。
四、编写测试用例
  这里只用了一个类进行测试,名为BookTest,以前这样的类可能需要继承NUnit.Framework.TestCase类,但现在只需要对该类使用TestFixture属性进行标识即可,而无须继承了。BookTest类包含两个用例,分别对应该类的testId和testName方法,即每个方法实现了一个测试用例。注意,在NUnit中,这些用来实现测试用例的方法有两种手段进行标识:一个是以testXXX的格式来命名,一个是使用Test属性进行标识。此外,BookTest还有Init和Dispose这两个方法,并分别使用SetUp和TearDown属性来进行标识,前者在每个测试方法开始之前执行,多用来做初始化;后者在每个测试方法完成之后执行,多用来清理资源。注意,这两个方法的名称并没有什么限制,但必须用SetUp和TearDown属性进行标识。另外,NUnit还提供了TestFixtureSetUp和TestFixtureTearDown属性,功能与SetUp和TearDown类似,但前者是在所有用例执行之前做初始化、之后做清理,而后者是在每个用例执行之前做初始化、之后做清理。下面开始编写BookTest。
  点击菜单“File”->“New”->“Other”,打开“New Items”对话框,在该对话框中选择“C# Projects”或“Delphi for .NET Projects”下的“New Files”,然后选中“Class”,点击“OK”按钮。此时请按下快捷键Ctrl S,保存文件,我将文件命名为BookTest.cs和BookTest.pas。下面修改代码,C#代码如下:
  using System;
  using NUnit.Framework;

  namespace NUnitCS
  {
    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    [TestFixture]
    public class BookTest
    {
      Book book = null;

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

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

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

      [TestFixtureTearDown]
      public void Dispose()
      {
        Console.WriteLine("book对象将被清理!");
        book = null;
        Console.WriteLine("测试结束!");
      }
    }
  }
这里Init和Dispose方法没什么好说的,就是执行了对book对象的初始化和清理,不过testId和testName需要说明一下。前者是在对book的id属性进行测试,首先赋值为”001”,然后使用Assert的AreEqual方法查看id属性中存放的值是否是期待的值,由于我的期待值也是”001”,所以执行后这个用例应该是成功的;后者则是对book的name属性进行测试,也是首先赋值为”ASP”,然后使用Assert的AreEqual方法查看其值是否是期待的,由于我特意将期待值设定为根本不可能的”JSP”,因此这个用例执行后会出现一个错误。但请注意,由于我是特意要让测试出现错误,所以将期待值设定成了不可能的值,如果你是测试人员,请千万不要这么做,否则如果别的地方导致了错误,很容易给自己造成不必要的麻烦。
  下面简单介绍一下上边用到的静态类NUnit.Framework.Assert。该类主要包含20个方法:
  1.AreEqual()和AreNotEqual()方法,用来查看两个对象的值是否相等或不等,与对象比较中使用的Equals()方法类似。
  2.AreSame()和AreNotSame()方法,用来比较两个对象的引用是否相等或不等,类似于通过“Is”或“==”比较两个对象。
  3.Contains()方法,用来查看对象是否在集合中,集合类型应与System.Collections.IList兼容。示例:
    object o = new object();
    ArrayList al = new ArrayList();
    al.Add(o);
    Assert.Contains(o, al);
  4.Greater()和Less()方法,用来比较两个数值的大小,前者相当于大于号(>),后者相当于小于号(<)。
  5.IsInstanceOfType()和IsNotInstanceOfType()方法,用来判断对象是否兼容于指定类型。示例:
    Type t = new object().GetType();
    string s = "";
    Assert.IsInstanceOfType(t, s);
由于Object是.net中所有类型的基类,String类型兼容于Object,因此这个示例是能够运行通过的。而下边这个示例运行将是失败的:
    Type t = new ArrayList().GetType();
    string s = "";
    Assert.IsInstanceOfType(t, s);
  6.IsAssignableFrom()和IsNotAssignableFrom()方法,用来判断对象是否是指定类型的实例。示例:
    Type t = new object().GetType();
    string s = "";
    Assert.IsAssignableFrom(t, s);
这个示例与之前的示例是一样的,但由于字符串s不是Object类型的,因此无法运行通过。而下边这个实例可以运行通过:

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!