ASP.NET Web 服务的单元测试
ASP.NET Web 服务的单元测试与类的单元测试之间存在一些差异。 最重要的是,您的项目必须包含 .aspx 文件。 本主题介绍如何进行单元测试,以及在您为 ASP.NET Web 服务创建单元测试时,测试项目中发生了什么。
有关如何在网站上运行性能测试的更多信息,请参见创建和编辑 Web 性能测试。 有关类单元测试的更多信息,请参见如何:创建和运行单元测试。
系统必备组件
请确保已安装以下 IIS 组件:
IIS 6 元数据库和 IIS 6 配置兼容性
确保项目中包含一个 .aspx 文件
要运行单元测试,包含 ASP.NET Web 服务的项目中必须存在一个 .aspx 文件。 在没有 .aspx 文件的情况下,您似乎可以创建单元测试,但当您尝试运行这些单元测试时,将收到一个错误,提示 Web 请求已成功完成。 但是,测试实际上并没有运行。
添加 .aspx 文件
在**“解决方案资源管理器”中,右击包含 ASP.NET Web 服务的项目,单击“添加”,然后单击“新建项目”**。
在**“添加新项目”对话框的“已安装的模板”下,单击“Web”**。
在 Web 模板列表中,选择**“Web 窗体”,并单击“添加”**。
以下三个新文件将添加到项目中:WebForm1.aspx、WebForm1.aspx.cs 和 WebForm1.aspx.designer.cs。 您不必修改或使用这两个文件。
为 ASP.NET Web 服务生成单元测试时会发生什么
下图显示为简单 ASP.NET Web 服务项目生成的测试方法。 有关创建单元测试时发生的更一般的更改的信息,请参见单元测试分析。
ASP.NET 单元测试方法
所有单元测试都是使用 [TestMethod ()] 特性生成的。
[Host Type ()] 特性指定将在其中运行单元测试的主机适配器。 您不必更改此特性。
[AspNetDevelopmentServerHost()] 特性指定当 ASP.NET Development Server 作为测试的主机服务器时使用的设置。 仅当 ASP.NET Web 服务在文件系统中而不是 IIS 进程中运行时,才会包括此特性。 您不必更改此特性。
[UrlToTest()] 特性指定单元测试的 ASP.NET Web 服务的 URL。
其余的为测试方法体。 您可能希望在测试方法中初始化变量并编辑断言。
如果您运行的是 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