至此,用于测试的类编写完成了。
四、编写测试用例
这里只用了一个类进行测试,名为BookTest,以前这样的类可能需要继承NUnit.Framework.TestCase类,但现在只需要对该类使用TestFixture属性进行标识即可,而无须继承了。BookTest类包含两个用例,分别对应该类的testId和testName方法,即每个方法实现了一个测试用例。注意,在NUnit中,这些用来实现测试用例的方法有两种手段进行标识:一个是以testXXX的格式来命名,一个是使用Test属性进行标识。此外,BookTest还有Init和Dispose这两个方法,并分别使用TestFixtureSetUp和TestFixtureTearDown属性来进行标识,前者在每个测试方法开始之前执行,多用来做初始化;后者在每个测试方法完成之后执行,多用来清理资源。注意,这两个方法的名称并没有什么限制,但必须用TestFixtureSetUp和TestFixtureTearDown属性进行标识。下面开始编写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。该类主要包含6个方法:
1.AreEqual()方法,用来查看对象中存的值是否是期待的值,与字符串比较中使用的Equals()方法类似;
2.IsFalse()和IsTrue()方法,用来查看变量是是否为false或true,如果IsFalse()查看的变量的值是false则测试成功,如果是true则失败,IsTrue()与之相反。
3.AreSame()方法,用来比较两个对象的引用是否相等,类似于通过"Is"或"=="比较两个对象;
4.IsNull()和IsNotNull()方法,用来查看对象是否为空和不为空。
下面再看一下Delphi代码:
unit BookTest;
interface
uses
Book, NUnit.Framework;
type
[TestFixture]
TBookTest = class
book : TBook;
private
{ Private Declarations }
public
constructor Create;
[TestFixtureSetUp]
procedure Init();
[Test]
procedure testId();
[Test]
procedure testName();
[TestFixtureTearDown]
procedure Dispose();
end;
implementation
constructor TBookTest.Create();
begin
inherited Create;
end;
procedure TBookTest.Init();
begin
Console.WriteLine(''''测试开始!'''');
book := TBook.Create();
Console.WriteLine(''''book对象被初始化!'''');
end;
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




