NUnit学习笔记之Mono篇

发表于:2008-4-01 15:51

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:网络转载

分享:

四、编写测试用例

        这里只用了一个类进行测试,名为BookTest,以前这样的类可能需要继承NUnit.Framework.TestCase类,但现在只需要对该类使用TestFixture属性进行标识即可,而无须继承了。BookTest类包含两个用例,分别对应该类的testId和testName方法,即每个方法实现了一个测试用例。注意,在NUnit中,这些用来实现测试用例的方法有两种手段进行标识:一个是以testXXX的格式来命名,一个是使用Test属性进行标识。此外,BookTest还有Init和Dispose这两个方法,并分别使用TestFixtureSetUp和TestFixtureTearDown属性来进行标识,前者在每个测试方法开始之前执行,多用来做初始化;后者在每个测试方法完成之后执行,多用来清理资源。注意,这两个方法的名称并没有什么限制,但必须用TestFixtureSetUp和TestFixtureTearDown属性进行标识。下面开始编写BookTest。

        在记事本中新建文件,与Book.cs保存在同一目录下,文件名BookTest.cs。然后输入代码,如下:
  using System;
  using NUnit.Framework;

  namespace NUnitCS
  {
    [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。该类主要包含7个方法:

        1.AreEqual()方法,用来查看对象中存的值是否是期待的值,与字符串比较中使用的Equals()方法类似;

        2.IsFalse()和IsTrue()方法,用来查看变量是是否为false或true,如果IsFalse()查看的变量的值是false则测试成功,如果是true则失败,IsTrue()与之相反;

        3.AreSame()方法,用来比较两个对象的引用是否相等,类似于通过“Is”或“==”比较两个对象;

        4.IsNull()和IsNotNull()方法,用来查看对象是否为空和不为空;

        5.Fail()方法,意为失败,用来抛出错误。我个人认为有两个用途:首先是在测试驱动开发中,由于测试用例都是在被测试的类之前编写,而写成时又不清楚其正确与否,此时就可以使用Fail方法抛出错误进行模拟;其次是抛出意外的错误,比如要测试的内容是从数据库中读取的数据是否正确,而导致错误的原因却是数据库连接失败。

        下面,还需要用记事本再编写一个文件,该文件中将包含main函数,以做为程序的入口点,我将该文件保存为Class1.cs。代码如下:
  using System;

  namespace NUnitCS
  {
    class Class1
    {
      static void Main(string[] args) {}
    }
  }

        至此,编码完成。

32/3<123>
2023测试行业从业人员调查问卷已开启,千元大奖正在等你~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号