.NET单元测试

以类作为测试的最小单元,以方法的内部结构作为测试的重点。

实际例子
A。新建一个类GetNum.cs,添加返回最大值的方法。public int GetMaxNum(int[] aryNum){...}
B。在GetMaxNum方法上右键,选择“创建单元测试”。弹出窗口默认选中了当前的方法,输出项目中选择“创建新的visual C#测试项目”。设置中可以设置生成的文件名、类名和方法名。确定后要求输入测试项目名称,再次确定后生成测试项目。
C。在GetNumTest.cs中找到GetMaxNumTest()方法。初始化aryNum的值,如 int[] aryNum = {1,2,3}; 所以expected应该设为3。最后把Assert.Inconclusive(...)这句注释掉,运行后显示结果为“通过”。
:一些数据库的插入方法,成功插入后可以先返回一个特定字符,如“OOKK”,用来设定expected的值。


单元测试中常用的“断言方法”:
Assert.AreEqual() 测试指定的值是否相等,如果相等,则测试通过;
Assert.Inconclusive() 表示一个未验证的测试;
Assert.IsTrue() 测试指定的条件是否为True,如果为True,则测试通过;
Assert.IsFalse() 测试指定的条件是否为False,如果为False,则测试通过;
Assert.IsNull() 测试指定的对象是否为空引用,如果为空,则测试通过;
Assert.IsNotNull() 测试指定的对象是否为非空,如果不为空,则测试通过;

关于数据库
:如果测试需要和数据库打交道,并且数据库的连接字符串是从配置文件中读取的,那么我们需要在测试项目中添加新项“应用程序配置文件”(App.config),把连接字符串加进去。

代码覆盖
代码覆盖是指单元测试运行时,覆盖了多少代码,是单元测试的一个关键指标。
Team Test 包含了一个代码覆盖工具,可以详细解释被执行代码的覆盖率,并突出显示哪些代码被执行,哪些代码没有被执行。

注意,VSTS 在生成单元测试框架时,默认没有启用“代码覆盖”功能。启用此功能的办法:在解决方案中双击“localtestrun.testrunconfig”文件,在弹出的对话框窗口的左侧选择“代码覆盖率”,然后在右侧的“要检测的项目”中选择要检测的项目,“应用”。
当我们启用了代码覆盖功能后,再次运行单元测试。在“测试结果”中右键选择“代码覆盖率结果”,在新的结果窗口中可展开相应的层次结构,查看代码的覆盖率。

posted @ 2009-08-11 11:42  DaCHun  阅读(3069)  评论(0编辑  收藏  举报