1. 新建一个空白解决方案,命名为"单元测试- 01"吧。
2.在该解决方案下创建一个类库,作为此次单元测试的测试对象;我们就创建一个数学类(用于实现运算的简单类)。命名为" Jack.MathLib".
(1). 在该类中创建一个类文件, 命名为" Math.cs ";
(2). 实现一个加法运算的方法,编写如下代码:
Code
3. 现在为了测试该数序计算类中的方法,我们在该解决方案中添加一个测试项目,命名" Jack.MathLibTest",创建方法如下:

命名后,点击" 确定 ",Vs 将为你添加必要的文件和说明:如:
(1)AuthoringTests.txt (Visual Studio Team System:创作和运行测试的概述 );
(2)同时还为该项目引用了" Microsoft.VisualStudio.QualityTools.UnitTestFramework "程序集,
4.右击该测试项目,添加一个单元测试,如下所示,该过程其实类似于《使用 Visual Studio 2005 Team System 进行单元测试并生成用于 Unit Test Framework 的源代码 详解》中,在某个类名上 右击选择"创建单元测试"是差不多的。
(1) 添加一个单元测试:
(2)根据向导,进行如下设置即可:

(3)点击确定:VSTS将为你添加一个单元测试类文件, 代码如下:
a). VSTS 同时将Jack.MathLib程序集添加到该项目的引用列表中:
b). VSTS 同时也根据你要进行测试的类,提供了适当的代码:
//
以下代码由 Microsoft Visual Studio 2005 生成。
//
测试所有者应该检查每个测试的有效性。
using
Microsoft.VisualStudio.TestTools.UnitTesting;
using
System;
using
System.Text;
using
System.Collections.Generic;
using
Jack.MathLib;
namespace
Jack.MathLibTest
{
///
<summary>
///
这是 Jack.MathLib.Math 的测试类,旨在
///
包含所有 Jack.MathLib.Math 单元测试
///
</summary>
[TestClass()]
public
class
MathTest
{
private
TestContext testContextInstance;
///
<summary>
///
获取或设置测试上下文,上下文提供
///
有关当前测试运行及其功能的信息。
///
</summary>
public
TestContext TestContext
{
get
{
return
testContextInstance;
}
set
{
testContextInstance
=
value;
}
}
#region
附加测试属性
//
//
编写测试时,可使用以下附加属性:
//
//
使用 ClassInitialize 在运行类中的第一个测试前先运行代码
//
//
[ClassInitialize()]
//
public static void MyClassInitialize(TestContext testContext)
//
{
//
}
//
//
使用 ClassCleanup 在运行完类中的所有测试后再运行代码
//
//
[ClassCleanup()]
//
public static void MyClassCleanup()
//
{
//
}
//
//
使用 TestInitialize 在运行每个测试前先运行代码
//
//
[TestInitialize()]
//
public void MyTestInitialize()
//
{
//
}
//
//
使用 TestCleanup 在运行完每个测试后运行代码
//
//
[TestCleanup()]
//
public void MyTestCleanup()
//
{
//
}
//
#endregion
///
<summary>
///
Add (int, int) 的测试
///
</summary>
[TestMethod()]
public
void
AddTest()
{
Math target
=
new
Math();
int
x
=
0
;
//
TODO: 初始化为适当的值
int
y
=
0
;
//
TODO: 初始化为适当的值
int
expected
=
0
;
int
actual;
actual
=
target.Add(x, y);
Assert.AreEqual(expected, actual,
"
Jack.MathLib.Math.Add 未返回所需的值。
"
);
Assert.Inconclusive(
"
验证此测试方法的正确性。
"
);
}
}
}
5. 这里我采用数据库,为测试提供适当数据。
(1)在测试项目中添加一个Config文件,命名为 “App.config”,添加如下代码:
<?
xml version="1.0" encoding="utf-8"
?>
<
configuration
>
<
configSections
>
<
section
name
="microsoft.visualstudio.testtools"
type
="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
/>
</
configSections
>
<
connectionStrings
>
<
add
name
="MyJetConn"
connectionString
="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\testdatasource.mdb; Persist Security Info=False;"
providerName
="System.Data.OleDb"
/>
<
add
name
="MyExcelConn"
connectionString
="Dsn=Excel Files;dbq=data.xlsx;defaultdir=.; driverid=790;maxbuffersize=2048;pagetimeout=5"
providerName
="System.Data.Odbc"
/>
</
connectionStrings
>
<
microsoft.visualstudio.testtools
>
<
dataSources
>
<
add
name
="MyJetDataSource"
connectionString
="MyJetConn"
dataTableName
="MyTable"
dataAccessMethod
="Sequential"
/>
<
add
name
="MyExcelDataSource"
connectionString
="MyExcelConn"
dataTableName
="Sheet1$"
dataAccessMethod
="Sequential"
/>
</
dataSources
>
</
microsoft.visualstudio.testtools
>
</
configuration
>
这里提供了两种测试数据源如“Sql server” 和“Access”;我们以Access为例。
(2)创建一个Access文件(data.xlsx, 与App.config文件中的数据源路径保持一致),并添加适当数据:

(3)修改该测试类(“MathTest.cs”)的代码:
Code
需要注意的就是:
[DataSource("MyJetDataSource")] 的使用。
(4) 设置测试项目为"启动项目",点击" 启动选定的测试项目(不调试)"

在VSTS下面,可以看到他的测试进程