ImageVerifierCode 换一换
格式:DOCX , 页数:36 ,大小:38.66KB ,
资源ID:9050652      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9050652.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(微软visual studio 单元测试手册.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

微软visual studio 单元测试手册.docx

1、微软visual studio 单元测试手册微软vs 2008 单元测试手册目录单元测试框架 1单元测试的结构 2如何:生成单元测试 3生成单元测试 4如何:创作单元测试 5编辑现有单元测试 5以手动方式键入创建单元测试 6如何:创建 ASP.NET 单元测试 7用于数据驱动测试的元素 10编写数据驱动的单元测试的代码 10如何:配置数据驱动的单元测试 11用于建立调用顺序的属性 13对于程序集 13对于类 13对于测试方法 13用于标识测试类和方法的属性 14Assert 类和相关异常 14TestContext 类 14用于对测试进行标识和排序的属性 16测试配置类 16用于生成报告的属性

2、 17用于专用访问器的类 17使用 Assert 类 17使用 Assert.AreEqual 重载不安全类型 18单元测试框架单元测试框架支持在 Visual Studio 中进行单元测试。对单元测试进行编码时,请使用 Microsoft.VisualStudio.TestTools.UnitTesting 命名空间中的类和成员。当您从头开始编写了单元测试或对由测试的代码生成的单元测试进行改进时,您便可以使用这些类和成员。 元素组 为了帮助提供对单元测试框架的更为清晰的概述,本节将 UnitTesting 命名空间的元素分为相关的功能组。 说明:使用属性元素(其名称以字符串 Attribut

3、e 结束)时,可以使用也可以不使用字符串 Attribute。例如,下面的两个代码示例功能完全相同:TestClass() TestClassAttribute() 单元测试的结构单元测试是一个作为使用 C#、Visual Basic 或 Visual C+ 编写的类中的成员的方法。说明:有关如何对 C+ 成品代码使用单元测试以及如何使用用 C+ 编写的单元测试的详细信息,请参见 单元测试和 C+。为了使 Team System 测试工具 能够识别出单元测试,此源代码文件必须位于某个测试项目中,而这个项目是 Visual Studio 解决方案的一部分。在生成此项目或生成整个解决方案时,测试项

4、目将生成到包含可执行单元测试的程序集之中。所有单元测试方法都使用 TestMethod() 属性进行标记(在 Visual Basic 中则为 ),并且是 TestClass() 类的成员。而这个类又是在 Microsoft.VisualStudio.TestTools.UnitTesting 命名空间中定义的。在生成单元测试时,您可以看到,在所生成文件的开始处的 using 或 Imports 语句中包含有此命名空间。单元测试的属性(Attribute 和 Property) 除了单元测试方法的 TestMethod() 属性及其包容类的 TestClass() 属性之外,可使用其他属性启用

5、特定的单元测试功能。在这些属性中,最主要的属性有 TestInitialize() 和 TestCleanup()。使用标记有 TestInitialize() 的方法对将要在其中运行单元测试的环境的各个方面进行准备;这样做的目的在于为单元测试的运行建立已知的状态。例如,可以使用 TestInitialize() 方法复制、更改或创建测试中将要使用的某些数据文件。在运行完某个测试后,可通过标记有 TestCleanup() 的方法将环境返回到已知状态;这可能意味着需要删除文件夹中的文件,或将某个数据库返回到已知状态。例如,在测试了订单录入应用程序中使用的某个方法后,可将库存数据库重置为初始状态

6、。此外,建议您在 TestCleanup() 或 ClassCleanup 方法中使用清除代码,而不要在终结器方法中使用此代码。从终结器方法引发的异常不会被捕捉到,并且会导致无法预料的结果。TestContext 属性是测试类的一个重要属性。此属性包含的信息包括:当前正在运行的单元测试的名称、部署目录、日志文件的名称;对于数据驱动型测试,还包括所连接到的数据库。TestContext 属性返回一个 TestContext 实例。有关更多信息,请参见使用 TestContext 类。单元测试示例 下面的代码段演示一个用 C# 编写的简单的单元测试。复制代码 TestMethod()public

7、void DebitTest()string customerName = Mr. Bryan Walton; double balance = 11.99; BankAccount target = new BankAccount(customerName, balance);double amount = 11.22; target.Debit(amount);Assert.AreEqual(System.Convert.ToDouble(0.77), target.Balance, 0.05); / 0.05 is tolerance for floating-point compari

8、son/Assert.Inconclusive(A method that does not return a value cannot be verified.);若要查看其他示例,请参见 编写数据驱动的单元测试的代码。单元测试的结果 验证是否已通过单元测试有三种方法: 使用一条或多条 Assert 语句验证特定的结果。有关更多信息,请参见使用 Assert 语句。 验证没有引发任何异常。仍然可以使用一条或多条 Assert 语句完成此工作。 验证是否引发了某个特定的异常。可以使用 ExpectedExceptionAttribute 属性实现此目的。使用 Assert 语句 如果某个测试过

9、程产生的“通过”或“失败”结果对于您而言比测试可能完成的某些操作更有指示意义或更加重要,则应在测试代码中使用一条或多条 Assert 语句。测试引擎假定所有单元测试在开始时均为通过状态。测试将保持为此状态,直到 Assert 语句产生一个与通过状态相矛盾的结果,从而将此状态从“通过”更改为“失败”或“没有结论”,或者直到引发一个未在 ExpectedExceptionAttribute 属性中指定的异常。换句话说,没有 Assert 语句的单元测试在每次运行时都会产生一个“通过”结果。这并不表明这种测试没有任何价值,使用这种测试的目的可能仅仅是为了执行代码,确信它在运行时不会引发异常。单元测试

10、中执行的代码将作为代码覆盖率统计信息的一部分进行报告,而无论测试是产生了一个确定的结果还是甚至包含有 Assert 语句。但是,为了验证是否执行了某个特定操作或是否达到了某个特定状态,必须使用 Assert 语句。Microsoft.VisualStudio.TestTools.UnitTesting 命名空间提供了几条可供使用的 Assert 语句。不同的 Assert 语句为您提供了灵活性;例如,可以使用 Assert.Fail() 语句强迫测试失败。当然,除了这些 Assert 语句之外,您还可能可以在 if 块中使用 Assert 语句,从而构造自己的自定义功能。无论测试返回的结果如何

11、,测试的通过或失败都取决于它所包含的 Assert 语句。如果一个测试包含多条 Assert 语句,该测试的状态将保留为“通过”,直到遇到一条将此状态更改为“失败”或“没有结论”的 Assert 语句。有关更多信息,请参见使用 Assert 类。如何:生成单元测试可以采用多种方式创建单元测试。可以从成品代码生成单元测试(如以下过程所述),然后对其进行编辑,使其按所希望的方式工作。或者,可以手动创作单元测试,如 如何:创作单元测试 中所述。还可以从不知道其源代码的程序集中生成测试方法。在测试实验室环境中通常需要这样做。有关更多信息,请参见以下过程中提到“添加程序集”对话框的步骤。实现单元测试在生

12、成单元测试时,为在“创建单元测试”对话框中选择的每种成品代码方法创建一个单元测试方法,以下过程将对此进行解释。生成的每个单元测试调用 Inconclusive 方法,由于测试未实现,这将使测试失败。下一步是添加有意义的代码以检测所测试的方法是否正确运行,从而实现测试。有关更多信息,请参见如何:创作单元测试。生成单元测试 1. 在解决方案资源管理器中右击某个测试项目,指向“添加”,再单击“单元测试”。- 或 - 在解决方案资源管理器中右击某个测试项目,指向“添加”,再单击“新建测试”。在“添加新测试”对话框中单击“单元测试向导”,再单击“确定”。- 或 -在“测试列表编辑器”或“测试视图”窗口中

13、右击窗口图面,再单击“新建测试”。在“添加新测试”对话框中单击“单元测试向导”,再单击“确定”。- 或 -在 Visual Studio 代码编辑器中,右击要测试的命名空间、类或方法并选择“创建单元测试”。随即出现“创建单元测试”对话框。其中会出现一个树状结构,显示代码所属程序集的类和成员层次结构。使用此页可以为选定的所有成员或类生成单元测试,并可以选择要在其中放置生成的单元测试的项目。最初在树状结构中选定的代码元素是您右击的元素及其包含的所有子元素。该选择是基于当前光标位置的。2. (可选)还可以从文件系统中的程序集生成测试方法。a. 单击“添加程序集”。随即出现“添加程序集”对话框。b.

14、定位到文件系统中的程序集,选择该程序集并单击“打开”。将在“创建单元测试”对话框的树结构中显示选定程序集的代码元素层次结构。c. 可以重复此步骤以显示其他程序集。3. (可选)单击“筛选器”可更改显示的类和成员层次结构的内容。4. (可选)通过选中其复选框选择其他代码元素。5. (可选)单击“设置”可更改此测试的生成配置设置。例如,可以为要生成的测试文件、类和方法更改默认的命名选项。完成后,单击“确定”。6. 单击“确定”。如果解决方案的测试项目中还没有包含测试类的文件,则此操作将创建一个这样的文件并将其打开。该类中填充了以下方法:一个 “Initialize()”方法、一个“Cleanup(

15、)”方法和测试在步骤 1 和 2 中选定的代码元素的方法。解决方案资源管理器将在测试项目中显示新测试文件。如何:创作单元测试编辑单元测试的原因有两个:您正在手动创作一个单元测试;或者正在编辑一个新生成的单元测试。虽然您可以运行新生成的单元测试,但是由于它们是使用默认内容创建的,为了使测试能够产生有意义的结果,必须使用适当的值对默认内容进行初始化。在生成的单元测试中,通常需要自定义变量的赋值以及一个或多个 Assert 语句。在单元测试中使用 Assert 语句默认情况下,每个生成的单元测试都调用 Inconclusive 方法,这会导致测试失败,因为测试实际上仍未实现。下一步是添加有意义的代码

16、,以检查所测试的方法的操作是否正确。实现该目的的典型方法是生成一个值,然后使用 Assert.AreEqual 语句将该值与预期值进行比较。有关示例,请参见单元测试的结构中的“单元测试示例”。新生成的单元测试包含“To-do”注释,以提供更改建议。 不包含 Assert 语句的单元测试只要不超时,并且不引发意外的异常,就会自动通过。有关更多信息,请参见基本测试结果和使用 Assert 类。打开和创作单元测试本主题包含两个过程: 第一个过程描述如何编辑现有单元测试。通常,执行此操作的目的是为了准备一个已经自动生成的单元测试。请参见 如何:生成单元测试。 第二个过程描述如何手动创建和创作一个单元测

17、试。编辑现有单元测试1. 在解决方案资源管理器中的测试项目中,找到并打开包含该单元测试的文件,然后找到要编辑的单元测试方法。- 或 -在“测试视图”中,双击该单元测试,这将打开包含该单元测试的文件并滚动到相应的单元测试方法。2. 在方法中找到变量赋值部分。对于新生成的测试,将使用“To-Do”语句标记变量赋值部分,旨在提醒您需要自定义这些赋值语句。例如,以下便是需要编辑的一个典型的赋值语句:复制代码 string target.owner = null; / TODO: Initialize to an appropriate value 3. 为每个变量赋给相应的值。若要了解什么样的值才是适

18、当的,应考虑以下几个方面:在调用方法之前这些变量可能被初始化为的值,在调用方法时这些变量值可能经历的更改,以及期望的结果。有关此过程的示例,请参见演练:创建并运行单元测试中的“运行并编辑单元测试”过程。4. 在方法中查找并编辑 Assert 语句。如果需要,添加其他 Assert 语句。单元测试框架提供了众多的附加 Assert 类和方法,为您编写有用的 Assert 语句带来了极大的灵活性。有关更多信息,请参见单元测试框架。以手动方式键入创建单元测试 1. 在解决方案资源管理器中,右击某个测试项目,指向“添加”,然后单击“新建测试”。- 或 - 右击“测试视图”窗口图面,再单击“新建测试”。

19、这将显示“添加新测试”对话框。2. 在“模板”下单击“单元测试”,然后单击“确定”。新的源代码文件(其名称类似于 UnitTest1.cs)将被添加到测试项目中,它使用测试项目所用的语言。此文件包含单元测试需要的几个要素: 它引用 Microsoft.VisualStudio.TestTools.UnitTesting 命名空间和 System 命名空间。 它定义自己的命名空间,此命名空间包含一个测试类。测试类具有 TestClass 属性。 它包含一个初始化方法和一个清除方法。这两个方法分别具有 TestInitialize() 和 TestCleanup() 属性。 它包含一个具有 Tes

20、tMethod 属性的空白测试方法。您可以在此方法内添加测试逻辑。这个方法的默认名称类似于 TestMethod1()。此文件还会在用于编辑源代码的窗口中打开。新的(空白)测试方法将显示在“测试视图”窗口和“测试列表编辑器”中。3. 为测试方法添加测试代码。单元测试框架提供了众多的附加 Assert 类和方法,为您编写有用的 Assert 语句带来了极大的灵活性。 如何:创建 ASP.NET 单元测试使用 ASP.NET 单元测试可对 ASP.NET 项目中的方法进行测试。可采用以下两种方式中的任意一种创建 ASP.NET 单元测试: 通过从 ASP.NET 项目生成 ASP.NET 单元测试

21、。这是最常用的方法。 通过将现有的单元测试配置为 ASP.NET 单元测试。还可以在运行配置中指定与 ASP.NET 单元测试所用属性对应的设置。以下几节对这些过程进行了描述。说明:在运行 ASP.NET 单元测试时,请勿对包含 ASP.NET 单元测试的类中的任何方法使用 ClassCleanupAttribute 或 ClassInitializeAttribute 属性。同样,请勿在与 ASP.NET 单元测试相同的程序集中使用 AssemblyCleanupAttribute 或 AssemblyInitializeAttribute 属性。在这些情况下使用这些属性所产生的结果不具有确

22、定性。不过,可以对所有单元测试使用 TestInitializeAttribute 和 TestCleanupAttribute 属性。无论这些测试运行中包含的测试类型如何,都将在测试运行之前和之后分别运行安装脚本和清理脚本。有关与测试运行一起运行的脚本的更多信息,请参见 测试部署概述 和 如何:指定测试运行配置。生成 ASP.NET 单元测试 若要生成 ASP.NET 单元测试,首先要在 Visual Studio 解决方案中创建一个 ASP.NET 网站。然后向网站项目中添加一个类,最后从该类生成单元测试。生成 ASP.NET 单元测试1. 若要生成 ASP.NET 单元测试,首先请创建一

23、个 ASP.NET 网站。为此,请右击解决方案,指向“添加”,再单击“新建网站”。2. 在“添加新网站”对话框上单击“ASP.NET 网站”。3. 在“位置”之下单击“文件系统”指示 ASP.NET Development Server。4. 单击“确定”。现在即生成一个新网站。5. 向此项目中添加一个类。为此,请在“解决方案资源管理器”中右击该网站,再单击“添加新项”。6. 在“添加新项”对话框中单击“类”,再单击“添加”。7. 出现一个“Microsoft Visual Studio”对话框,询问是否要在 App_Code 文件夹中放置新类。单击“是”。说明:不能从 .aspx 文件或 A

24、pp_Code 之外的其他文件夹中的代码生成测试。8. 生成一个 ASP.NET 单元测试。如果新类文件尚未打开,请在解决方案资源管理器中双击它以将其打开。9. 在类文件中右击该类,再单击“创建单元测试”。10. 随即出现“创建单元测试”对话框。有关如何使用此对话框生成单元测试的信息,请参见 如何:生成单元测试。11. 验证已选定要为其生成测试的类、方法或命名空间。12. (可选)接受默认的“输出项目”或选择一个新项目。13. 完成上述操作后,单击“确定”。新 ASP.NET 单元测试即添加到测试项目中的文件中。若要查看该单元测试,请打开测试文件并滚动到末尾处。运行单元测试(作为 ASP.NE

25、T 单元测试)必需的属性均已自动指定。有关这些属性的更多信息,请参见下面的“配置 ASP.NET 单元测试”过程。 配置 ASP.NET 单元测试 可以将现有的单元测试配置为 ASP.NET 单元测试,方法为对特定测试的自定义属性赋值。可以在包含该单元测试的代码文件中设置这些值。在设置自定义属性之前,首先应添加对支持自定义属性的命名空间的引用;此处为 Microsoft.VisualStudio.TestTools.UnitTesting.Web 命名空间。有了此引用,IntelliSense 就可以帮助您设置属性值。注意生成 ASP.NET 单元测试时,将自动设置这些属性。配置 ASP.NE

26、T 单元测试1. 打开包含该单元测试的代码文件。2. 设置该单元测试的以下属性:TestMethod由于所有单元测试都需要 TestMethod 属性,因此应事先设置此属性。UrlToTest() 这是运行此单元测试时所测试的 URL;例如 UrlToTest(“http:/localhost/WebSites/Default.aspx”)HostType()使用 HostType(ASP.NET)。测试通常在 VSTest 宿主进程下运行,但 ASP.NET 单元测试必须在 ASP.NET 宿主进程下运行。示例示例 1. 如果使用 ASP.NET Development Server 运行网

27、站,则为 ASP.NET 单元测试设置的属性和值与以下类似: TestMethod()HostType(ASP.NET)UrlToTest(http:/localhost:25153/WebSite1)AspNetDevelopmentServerHost(D:Documents and Settingsuser nameMy DocumentsVisual Studio 2005WebSitesWebSite1, /WebSite1)示例 2. 若要测试在 IIS 下运行的网站,请仅使用 TestMethod、HostType 和 UrlToTest 属性:TestMethod()HostT

28、ype(ASP.NET)UrlToTest(http:/localhost:25153/WebSite1)使用运行配置对 ASP.NET 单元测试进行配置 可以在运行配置中指定与 ASP.NET 单元测试所用的属性对应的设置。在运行配置中指定了这些属性之后,只要该运行配置为活动状态,就会在运行任何 ASP.NET 单元测试时应用这些设置。说明:只有一组 ASP.NET 单元测试设置有效:运行配置设置或属性设置,但永远都不可能是两者的组合。运行配置设置优先于属性(如果存在)。也就是说,即使在运行配置中只指定了一个 ASP.NET 设置,也将忽略任何指定为属性的 ASP.NET 设置。使用运行配置

29、对 ASP.NET 单元测试进行配置1. 打开一个运行配置文件。有关更多信息,请参见如何:指定测试运行配置。2. 在“主机”页上,将“主机类型”设置为 ASP.NET。这将显示一些其他选择,其中有些选择与可在代码中指定的属性对应,如“要测试的 Url”。前面的“配置 ASP.NET 单元测试”过程中对这些属性进行了描述。完成“主机”页上值的设置后单击“保存”,再单击“确定”。用于数据驱动测试的元素使用以下元素来设置数据驱动的单元测试。 编写数据驱动的单元测试的代码说明: 如果某个单元测试具有数据驱动的单元测试要求的属性,则这个单元测试将用作数据驱动的测试。 通过使用“属性”窗口,或者通过直接将

30、这些属性添加到测试代码中,可以指定这些属性并为它们赋值。有关通过编辑单元测试的属性来将其配置为数据驱动的单元测试的更多信息,请参见 如何:配置数据驱动的单元测试。本主题介绍如何使用 DataSource 属性和 TestContext 类编写作为数据驱动的单元测试的单元测试。 使用数据源中的数据 在运行数据驱动的单元测试时,从数据源的行中检索数据。然后,通过 TestContext 类的 DataRow 和 DataConnection 属性将数据提供给正在运行的单元测试。在下面的示例中,DataRow()()() 的类型为 DataRow,LastName 是以下行中某个有效列的名称,该行与

31、数据驱动的测试的当前迭代关联。复制代码 TestContext.DataRowLastName尽管 LastName 按名称引用列,但是您也可以按列号引用列。对于表中的每一行来说,可以访问任意数量的列。例如,您可以一次检索若干个列的数据,使用这些数据进行计算,然后将计算结果与包含期望返回值的最后一列进行比较。 编写数据驱动的单元测试的代码 若要创建一个数据驱动的单元测试,既可以从手动创建的单元测试开始,也可以从生成的单元测试入手。有关更多信息,请参见 如何:创作单元测试 和 如何:生成单元测试。若要配置现有单元测试,请添加定义以下内容的属性:测试要使用的数据源、访问数据的方式以及要使用其中的行作为测试输入的数据表。有关配置这些属性的更多信息,请参见 如何:配置数据驱动的单元测试。例如,下面的代码就是来自于一个使用

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1