关闭

NUnit学习之VS.net 2005篇

发表于:2008-4-02 14:42

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

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

        下面简单介绍一下上边用到的静态类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()方法,用来比较两个字符串是否相等。

        下面再看一下C#代码:

using System;using System.Collections.Generic;using System.Text;using NUnit.Framework;namespace NUnitCS{[TestFixture]public class BookTest{Book book = null;[SetUp]public void Init(){Console.WriteLine("测试开始!");book = new Book();Console.WriteLine("book对象被初始化!");}[Test]public void testId(){book.id = "001"; //设置id属性的值为//使用Assert查看id属性的值是否为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属性被测试!");}[TearDown]public void Dispose(){Console.WriteLine("book对象将被清理!");book = null;Console.WriteLine("测试结束!");}}}
 

        没什么好说的吧?下面看J#代码:

package NUnitJS;import System.*;import NUnit.Framework.*;/** @attribute TestFixture() */public class BookTest{Book book = null;/** @attribute SetUp() */public void Init(){Console.WriteLine("测试开始!");book = new Book();Console.WriteLine("book对象被初始化!");}/** @attribute Test() */public void testId() {book.set_id("001"); //设置id属性的值为001//使用Assert查看id属性的值是否为001Assert.AreEqual("001", book.get_id());Console.WriteLine("id属性被测试!");}/** @attribute Test() */public void testName() {book.set_id("ASP"); //设置name属性的值为ASP//使用Assert查看name属性的值是否为JSP,这是个必然出现错误的测试Assert.AreEqual("JSP", book.get_name());Console.WriteLine("name属性被测试!");}/** @attribute TearDown() */public void Dispose(){Console.WriteLine("book对象将被清理!");book = null;Console.WriteLine("测试结束!");}}

        改好后,点击菜单“调试”->“启动调试”或按F5键运行程序。等等,main函数里头好象一句代码也没写过呢吧?没错,一句也没写,不过你照做就可以了。在看到黑屏一闪之后,编码工作完成。

43/4<1234>
《2024软件测试行业从业人员调查问卷》,您的见解,行业的声音!

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号