VS2010单元测试 -- 入门

 从一个简单的实例入手

 一、编写需要测试的类,该类为String对象扩展了IsIn方法,目的是判断当前字符串是否存在于指定的数组中,代码如下:

View Code
public static class HelperString
{
public static bool IsIn(this string str, string[] strs)
{
if (strs == null) { if (str == null) { return true; } return false; }
foreach (string item in strs)
{
if (str == item) { return true; }
}
return false;
}
}

 二、右键方法名称 --> 选择创建单元测试  --> 弹出创建单元测试对话框 -->  点击确定(如果不使用默认设置可选择窗口左下角的“设置”按钮) 

 三、VS会自动创建Test项目,如果是默认设置,测试项目生成的类名称 = “HelperStringTest”,用于测试“IsIn”方法的名称为“IsInTest”。

 四、测试属性

      每个测试类都会标记[TestClass]属性,方法为[TestMethod]。

 五、在IsInTest方法中添加测试代码,以下我为IsIn方法写了6个测试用例。

    

View Code
Assert.AreEqual(true, HelperString.IsIn("1", new string[] { "1", "2", "3" }));
Assert.AreEqual(
false, HelperString.IsIn("5", new string[] { "1", "2", "3" }));
Assert.AreEqual(
false, HelperString.IsIn("5", null));
Assert.AreEqual(
true, HelperString.IsIn(null, null));
Assert.IsTrue(HelperString.IsIn(
"2", new string[] { "1", "2", "3" }));
Assert.IsFalse(HelperString.IsIn(
"4", new string[] { "1", "2", "3" }));

 六、Assert测试帮助类介绍

     详细请查阅 http://msdn.microsoft.com/zh-cn/library/microsoft.visualstudio.testtools.unittesting.assert.aspx

 七、右键点击测试方式 --> 选择运行测试  --> 在测试接口窗口中查看测试结果,运行测试的快捷键(Ctrl + R + T),如果需要进行调试则可以按F5。

 至此,一个简单的单元测试已经完工了,下面我们来查看代码覆盖率(即本次运行的单元测试覆盖了被测试程序集的哪部分代码块),设置方法如下:

 单击菜单栏中的测试 --> 编辑测试设置 --> 本地(local.testsettings) --> 弹出测试设置对话框 --> 在左边的列表中选择数据和诊断 --> 在右边名称列表框中选择代码覆盖率,选中

 -->  单击名称列表框上边的配置按钮 --> 弹出代码覆盖率详细信息对话框 --> 选择要检测的项目(即“IsInfo”方法所在的程序集) --> 单击确定

 重新运行测试程序 --> 单击菜单栏中的测试 --> 窗口 --> 代码覆盖率 --> 在VS下方的代码覆盖率窗口中即可查看被设置程序集的代码覆盖率情况,也可以在被测试的类中查看代码覆盖

 情况(如果没有被覆盖,则以淡红色显示)。

 接下来我们创建一个简单的数据驱动的单元测试,提取出一个表中的记录,并保存在一个变量中,以备后用。

 一、在测试类中添加一个方法“FromSqlTest”,表示数据源来自SqlServer,并添加[TestMethod]属性(这是每个单元测试方法必须得属性)。

 二、为测试方法添加[DataSource]标签,全部代码如下所示:

View Code
[DataSource("System.Data.SqlClient",
@"Data Source=HNJCHENNANFEI;
Initial Catalog=Linq;
Integrated Security=True
",
"Linq_Class", DataAccessMethod.Sequential), TestMethod]
public void ToSqlTest() {
string str = TestContext.DataRow["Name"].ToString();
}

 三、DataSource参数介绍

      1、获取此数据源的固定提供程序的名称。

      2、设置连接字符串

      3、设置数据表名

      3、枚举值,当前设置为按顺序读取数据表中的记录,另一个选项是随机

      详细请查阅 http://msdn.microsoft.com/zh-cn/library/microsoft.visualstudio.testtools.webtesting.datasource.aspx

  四、TestContext

      TestContext.DataRow会循环获得数据表中的每条记录

      详细请查阅 http://msdn.microsoft.com/zh-cn/library/microsoft.visualstudio.testtools.unittesting.testcontext_members(v=VS.80).aspx

 

posted @ 2011-05-19 17:45  CNF  阅读(5195)  评论(1编辑  收藏  举报