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 @   CNF  阅读(5203)  评论(1编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示