VS2010单元测试 -- 入门
从一个简单的实例入手
一、编写需要测试的类,该类为String对象扩展了IsIn方法,目的是判断当前字符串是否存在于指定的数组中,代码如下:

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个测试用例。

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]标签,全部代码如下所示:

[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会循环获得数据表中的每条记录
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具