ASP.NET Web 服务的单元测试

ASP.NET Web 服务的单元测试与类的单元测试之间存在一些差异。 最重要的是,您的项目必须包含 .aspx 文件。 本主题介绍如何进行单元测试,以及在您为 ASP.NET Web 服务创建单元测试时,测试项目中发生了什么。

有关如何在网站上运行性能测试的更多信息,请参见创建和编辑 Web 性能测试。 有关类单元测试的更多信息,请参见如何:创建和运行单元测试

系统必备组件

请确保已安装以下 IIS 组件:

IIS 6 元数据库和 IIS 6 配置兼容性

确保项目中包含一个 .aspx 文件

要运行单元测试,包含 ASP.NET Web 服务的项目中必须存在一个 .aspx 文件。 在没有 .aspx 文件的情况下,您似乎可以创建单元测试,但当您尝试运行这些单元测试时,将收到一个错误,提示 Web 请求已成功完成。 但是,测试实际上并没有运行。

添加 .aspx 文件

  1. 在**“解决方案资源管理器”中,右击包含 ASP.NET Web 服务的项目,单击“添加”,然后单击“新建项目”**。

  2. 在**“添加新项目”对话框的“已安装的模板”下,单击“Web”**。

  3. 在 Web 模板列表中,选择**“Web 窗体”,并单击“添加”**。

以下三个新文件将添加到项目中:WebForm1.aspx、WebForm1.aspx.cs 和 WebForm1.aspx.designer.cs。 您不必修改或使用这两个文件。

为 ASP.NET Web 服务生成单元测试时会发生什么

下图显示为简单 ASP.NET Web 服务项目生成的测试方法。 有关创建单元测试时发生的更一般的更改的信息,请参见单元测试分析

ASP.NET 单元测试方法

ASP.NET 单元测试方法

  1. 所有单元测试都是使用 [TestMethod ()] 特性生成的。

  2. [Host Type ()] 特性指定将在其中运行单元测试的主机适配器。 您不必更改此特性。

  3. [AspNetDevelopmentServerHost()] 特性指定当 ASP.NET Development Server 作为测试的主机服务器时使用的设置。 仅当 ASP.NET Web 服务在文件系统中而不是 IIS 进程中运行时,才会包括此特性。 您不必更改此特性。

  4. [UrlToTest()] 特性指定单元测试的 ASP.NET Web 服务的 URL。

  5. 其余的为测试方法体。 您可能希望在测试方法中初始化变量并编辑断言。

提示

有关此处所述特性的更多信息,请参见

Microsoft.VisualStudio.TestTools.UnitTesting.

如果您运行的是 Windows Vista,请以管理员身份运行 Visual Studio

如果您运行的是 Windows Vista,必须以管理员身份运行 Visual Studio 才能运行 ASP.NET 单元测试。 如果您作为一般用户运行 Visual Studio,虽然可以创建网站测试并且可以创建和运行 ASP.NET 测试,但这些测试将失败。 若要以管理员身份运行 Visual Studio,请在**“开始”菜单上右击“Microsoft Visual Studio 2010”**,然后单击 “以管理员身份运行”

如果您作为非默认用户运行 IIS,确保启用所有必需的权限

创建 ASP.NET Web 服务时,可以选择**“文件系统”“HTTP”“FTP”**位置之一。 如果选择“文件系统”,则将使用 ASP.NET Development Server 进程。 如果选择“HTTP”或“FTP”,则将使用 IIS 进程。

如果 ASP.NET Web 服务在 IIS 进程中运行,为安全起见,您可以选择以非默认用户身份运行单元测试。 非默认用户是不同的进程标识。

例如,如果 ASP.NET Web 服务必须访问计算机上的文件夹、文件或数据库等资源,则可以选择以对这些资源具有恰如其分、不多不少的权限的进程标识来运行 ASP.NET 进程。

如果 Web 服务需要非默认用户不具有的权限,则单元测试可能会失败。 例如,以非默认用户身份运行的 ASP.NET 进程可能只有有限的权限,但仍可能尝试在 %WINDIR%\Temp 文件夹中生成临时文件。 如果 %WINDIR%\Temp 上的默认权限使该进程无法生成这些文件,则生成操作就会失败。 在这种情况下,为了使单元测试执行能够成功,您必须使该进程对 %WINDIR%\Temp 文件夹拥有更高的权限。

请参见

参考

Microsoft.VisualStudio.TestTools.UnitTesting

概念

如何:创建和运行单元测试

单元测试分析