下面简单介绍一下上边用到的静态类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) {}
}
}
至此,编码完成。
下面用Mono提供的mcs来编译程序。不过在编译之前,请确认Mono安装目录(我的安装目录是C:\Program Files\Mono-1.1.12.1)下的bin文件夹是否被配置到了环境变量path中。虽然这不是必须的,但编译程序时会方便一点。配置好后,打开命令行工具,将路径定位到保存源码文件的文件夹下,然后运行如下命令:
mcs –r:nunit.framework.dll –out:NUnit.exe Class1.cs Book.cs BookTest.cs
如下图所示:
这里第一行命令对环境变量path做了临时配置,以防有人不会配置。不过这么做只是临时的,关掉命令行窗口后该配置就会遗失,但也没办法,要是通过“我的电脑”来配置,演示起来太麻烦了。下面简单介绍一下这里所执行mcs命令:
1. 参数-r,用来调用动态连接库。这里调用的nunit.framework.dll就是Mono自带的NUnit类库。
2.参数-out,要输出的文件的名字,需要加扩展名。
执行后,在保存源码的文件夹下生成一个名为NUnit.exe的可执行文件。
五、运行NUnit
编码完成后,就可以使用NUnit进行测试了。Mono自带的NUnit只提供了控制台工具,执行命令如下:
nunit-console NUnit.exe
执行结果如下:
执行结束后,目录下会生成一个TestResult.xml文件,该文件以XML格式保存了测试结果信息。
六、小结
与半年前相比,Mono已经有了很大进步,至少对中文的支持就比以前强多了,而且现在学习Mono的人也越来越多,资料也相对容易获得,不过与Sun的Java、MS的.net相比还是有些弱小。但任何事物也不是一蹴而就的,Java能有今天也要走过十年,而.net则更是由于有了微软这棵大树,因此对于Mono,我有着更多的期待。