NUnit学习之VS.net 2005篇

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

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

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

        在该对话框中,“类”模板被默认选中,请将名称修改为Book.vb或Book.cs、Book.jsl,然后点击“添加”按钮。

        类创建后,需要修改代码,VB代码如下:

Public Class BookDim pid As String = NothingDim pname As String = NothingProperty id() As StringGetReturn pidEnd GetSet(ByVal Value As String)pid = ValueEnd SetEnd PropertyProperty name() As StringGetReturn pnameEnd GetSet(ByVal Value As String)pname = ValueEnd SetEnd PropertyEnd Class
 

        代码比较简单,没什么可说的吧?下边是C#代码:

using System;using System.Collections.Generic;using System.Text;namespace NUnitCS{public class Book{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;}}}}
 

        也没什么可说的吧?下边是J#代码:

package NUnitJS;public class Book{private String pid = null;private String pname = null;/** @property */public void set_id(String value){pid = value;}/** @property */public String get_id(){return pid;}/** @property */public void set_name(String value){pname = value;}/** @property */public String get_name(){return pname;}}
 

        可以看到,J#代码与VB和C#代码有些不同,因为J#的语法是从Java演变过来的,所以其属性在定义时被拆成了set_XXX和get_XXX这样的两个方法。但仅有set_XXX和get_XXX这样的两个方法还不够,还需要使用@property指令进行说明。虽然用不用@property指令在调用时也没什么区别,但你可以尝试将变量pid和pname更名为id和name,重新编译;而后再将@property指令去掉,再重新编译。真的不一样。

        至此,用于测试的类编写完成了。

四、编写测试用例

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

        点击菜单“项目”->“添加类”,打开“添加新项”对话框,将名称改为BookTest.vb或BookTest.cs、BookTest.jsl,然后点击“添加”按钮创建该类。修改代码,VB代码如下:

        Imports NUnit.Framework<TestFixture()> _Public Class BookTestDim bo As Book = Nothing<SetUp()> _Public Sub Init()Console.WriteLine("测试开始!")bo = New BookConsole.WriteLine("book对象被初始化!")End Sub<Test()> _Public Sub testId()bo.id = "001" '设置id属性的值为'使用Assert查看id属性的值是否为Assert.AreEqual("001", bo.id)Console.WriteLine("id属性被测试!")End Sub<Test()> _Public Sub testName()bo.name = "ASP" '设置name属性的值为ASP'使用Assert查看name属性的值是否为JSP,这是个必然出现错误的测试Assert.AreEqual("JSP", bo.name)Console.WriteLine("name属性被测试!")End Sub<TearDown()> _Public Sub Dispose()Console.WriteLine("book对象将被清理!")bo = NothingConsole.WriteLine("测试结束!")End SubEnd Class
 

        这里Init和Dispose方法没什么好说的,就是执行了对book对象的初始化和清理,不过testId和testName需要说明一下。前者是在对bo的id属性进行测试,首先赋值为”001”,然后使用Assert的AreEqual方法查看id属性中存放的值是否是期待的值,由于我的期待值也是”001”,所以执行后这个用例应该是成功的;后者则是对bo的name属性进行测试,也是首先赋值为”ASP”,然后使用Assert的AreEqual方法查看其值是否是期待的,由于我特意将期待值设定为根本不可能的”JSP”,因此这个用例执行后会出现一个错误。但请注意,由于我是特意要让测试出现错误,所以将期待值设定成了不可能的值,如果你是测试人员,请千万不要这么做,否则如果别的地方导致了错误,很容易给自己造成不必要的麻烦。

42/4<1234>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号