单元测试框架
更新:2007 年 11 月
单元测试框架支持在 Visual Studio 中进行单元测试。对单元测试进行编码时,请使用 Microsoft.VisualStudio.TestTools.UnitTesting 命名空间中的类和成员。当您从头开始编写了单元测试或对由测试的代码生成的单元测试进行改进时,您便可以使用这些类和成员。
元素组
为了帮助提供对单元测试框架的更为清晰的概述,本节将 UnitTesting 命名空间的元素分为相关的功能组。
说明: |
---|
使用属性元素(其名称以字符串 Attribute 结束)时,可以使用也可以不使用字符串 Attribute。例如,下面的两个代码示例功能完全相同: [TestClass()] [TestClassAttribute()] |
用于数据驱动测试的元素
使用以下元素来设置数据驱动的单元测试。有关更多信息,请参见编写数据驱动的单元测试的代码和如何:配置数据驱动的单元测试。
用于建立调用顺序的属性
用下列属性之一进行修饰的代码元素将在您所指定的时刻被调用。有关更多信息,请参见单元测试的结构。
对于程序集
在加载程序集之后以及卸载程序集之前,将调用 AssemblyInitialize 和 AssemblyCleanup。
AssemblyCleanupAttribute
对于类
在加载类之后以及卸载类之前,将调用 ClassInitialize 和 ClassCleanup。
ClassInitializeAttribute
对于测试方法
TestCleanupAttribute
用于标识测试类和方法的属性
每个测试类都必须具有 TestClass 属性,每个测试方法都必须具有 TestMethod 属性。有关更多信息,请参见单元测试的结构。
Assert 类和相关异常
单元测试可以通过使用各种 Assert 语句、异常和属性来验证特定的应用程序行为。有关更多信息,请参见使用 Assert 类。
TestContext 类
测试上下文类的属性存储有关当前测试运行的信息。例如,TestContext.DataRow 和 TestContext.DataConnection 属性包含测试用于数据驱动的单元测试的信息。
TestContext
用于对测试进行标识和排序的属性
下列属性以及为其所赋的值显示在 Visual Studio 中特定测试方法的“属性”窗口中。
这些属性并未设计为通过单元测试代码来访问。相反,您可以利用它们通过 Visual Studio 的 IDE 或通过 Team System 测试引擎影响单元测试的使用或运行方式。
例如,其中一些属性在“测试列表编辑器”和“测试结果”窗口中显示为列,这表明可以使用这些属性来对测试和测试结果进行分组和排序。
此类属性之一是 TestPropertyAttribute,使用它可以向单元测试中添加任意元数据。例如,可以使用它来存储此测试所涵盖的测试通过的名称,方法是使用 [TestProperty("TestPass", "Accessibility")] 对单元测试进行标记。或存储它所属测试种类的指示符:[TestProperty("TestKind", "Localization")]。您使用此属性 (Attribute) 创建的属性 (Property) 以及所赋的属性 (Property) 值都将显示在标题为“测试特定的”的 Visual Studio“属性”窗口中。
测试配置类
用于生成报告的属性
本节中的属性将它们所修饰的测试方法与 Team Foundation Server 团队项目的项目层次结构中的实体相关联。有关更多信息,请参见如何:启用测试结果报告。
CssIterationAttribute
用于专用访问器的类
如如何:测试私有方法中所述,可以为私有方法生成单元测试。此生成会创建专用访问器类,该类将实例化 PrivateObject 类的对象。PrivateObject 类是一个包装类,它使用反射作为专用访问器进程的一部分。PrivateType 类与之相似,但它用于调用私有静态方法,而不是调用私有实例方法。