如何:在 ASP.NET 解决方案中运行测试时进行调试

您可以调试用于测试 ASP.NET Web 项目的单元测试和 Web 测试。也可以在运行测试时调试 ASP.NET 生产代码。

但是,在测试 ASP.NET 代码时,测试代码不会以通常的方式在 VSTestHost 进程下运行。而是在 IIS 进程中运行,或者,如果网站是基于文件的,则在 ASP.NET Development Server 进程中运行。因为不是在典型的测试进程中运行的测试,请选择调试单元测试测试菜单上的选项不在运行测试时调试。

同样,也不能单步执行 ASP.NET 生产代码,除非启用了调试,并且调试器已附加到 ASP.NET Development Server 进程或 IIS 进程。

在下面的每个过程中,您都将使用**“新建网站”对话框创建一个 ASP.NET 网站项目。在此对话框中,使用“位置”**列表框选择网站位置。此选项决定了稍后将调试器附加到哪个进程,以及在 ASP.NET 解决方案中运行测试时需要遵循哪些步骤来进行调试。有 IIS 和 ASP.NET Development Server 两个选项。

  • 在 IIS 上运行时进行调试

  • 在 ASP.NET Development Server 上运行时进行调试

在 IIS 上运行时进行调试

在如下过程中,会将调试器附加到某个进程。进程的名称取决于所使用的操作系统,因为操作系统决定了所安装的 IIS 的版本。

在 IIS 上运行 ASP.NET 测试时进行调试

  1. 创建您要测试的 ASP.NET 网站项目以及用来测试该项目的 ASP.NET 单元测试。

    在创建该网站项目时,请在**“新建网站”对话框的“位置”**中选择“HTTP”或“FTP”。这样可保证宿主进程将是 IIS。

  2. 在 ASP.NET Web 项目中启用调试。为此,请编辑项目的 Web 配置文件。如果您的项目已具有 Web.config 文件,请转至步骤 4。如果不是,现在添加一个: 在解决方案中打开网站项目的快捷菜单,然后选择添加新项

    显示**“添加新项”**对话框。

  3. 添加新项 对话框框中,选择 Web 配置文件 ,然后选择 添加

    Web.config 文件即已添加到您的网站项目中。有关如何使用 Web.config 文件的更多信息,请参见如何:为 ASP.NET 应用程序启用调试

  4. 在 Web.config 文件中,将内容为 <compilation debug="false"/> 的行更改为 <compilation debug="true"/>。

  5. (可选)在网站的 ASP.NET 单元测试和生产代码中设置断点。

  6. 将调试器附加到 IIS 进程。若要执行此操作,请选择调试 ,然后选择 附加到进程

    显示**“附加到进程”**对话框。

  7. 在**“可用进程”**下,找到要将调试器附加到的进程的名称。

    如果您需要的进程未显示,可以显示更多正在运行的进程。为此,请选中**“显示来自所有用户的进程”“显示所有会话中的进程”**。

  8. 可用进程,选择过程的名称,然后选择 附加

    如果您有权将附加的进程未运行,请选择取消 ,然后启动该进程。为此,请在解决方案资源管理器中打开网站项目的快捷菜单,然后选择在浏览器中的查看。接下来,选择调试 ,然后选择 附加到进程一个更多的时间。 过程已开始运行,将显示在可用进程。选择进程的名称,然后选择附加

  9. 启动测试。

    为此,请选择要调试在单元测试资源管理器,然后从的测试测试 菜单中,选择 调试单元测试 ,然后 选定的测试

    说明说明

    运行测试时,可以选择“运行选定内容”,而不选择“调试选定内容”。二者之间的区别在于,如果您选择“调试选定内容”,调试器在测试完成之后会自动分离;但是,如果您选择“运行选定内容”,调试器在测试完成之后仍然附加到进程。您可能会发现“运行选定内容”更有用,尤其当您打算在调试过程中重新运行测试若干次,而且不希望每次都必须重新附加进程时,它的优势会更明显。如果您选择了“运行选定内容”,那么,要在调试完成时与进程分离,请从“调试”菜单中选择“停止调试”或者按 Shift+F5。

在 ASP.NET Development Server 上运行时进行调试

在 ASP.NET Development Server 上运行测试时进行调试

  1. 创建您要测试的 ASP.NET 网站项目以及用来测试该项目的 ASP.NET 单元测试。

    在创建该网站项目时,请在**“新建网站”对话框的“位置”**中选择“文件系统”。这样可保证宿主进程将是 ASP.NET Development Server。

  2. 在 ASP.NET Web 项目中启用调试。为此,请编辑项目的 Web 配置文件。如果您的项目已具有 Web.config 文件,请转至步骤 4。如果不是,现在添加一个: 在解决方案中打开网站项目的快捷菜单,然后选择添加新项

    显示**“添加新项”**对话框。

  3. 添加新项 对话框框中,选择 Web 配置文件 ,然后选择 添加

    Web.config 文件即已添加到您的网站项目中。有关如何使用 Web.config 文件的更多信息,请参见如何:为 ASP.NET 应用程序启用调试

  4. 在 Web.config 文件中,将内容为 <compilation debug="false"/> 的行更改为 <compilation debug="true"/>。

  5. 将 System.Diagnostics.Debugger.Break() 语句添加到 ASP.NET 单元测试的开头。

    说明说明

    只有当代码中的断点遵循这条 System.Diagnostics.Debugger.Break() 语句时,才会命中这些断点。

    说明说明

    在 C++ 中,这条语句是 System::Diagnostics::Debugger::Break()。有关如何在 Visual C++ 中使用单元测试的信息,请参见Unit Tests and C++

  6. 在网站的 ASP.NET 单元测试和生产代码中设置断点。

  7. 启动测试。

    为此,请选择要调试在单元测试资源管理器,然后从的测试测试 菜单中,选择 调试单元测试 ,然后 选定的测试

  8. 一旦测试开始运行,就会出现一个对话框。该对话框指示程序已经遇到一个断点。

  9. 选择调试,选择该实例的Visual Studio的已加载,您的解决方案,然后选择

    Visual Studio 将附加到该进程,执行将在 System.Diagnostics.Debugger.Break() 语句处暂停。您可以从“调试”菜单中选择**“继续”**或者按 F5 来允许继续执行到下一个断点处。

    说明说明

    请务必在调试完毕后移除 System.Diagnostics.Debugger.Break() 语句。否则,每次运行测试时,都会出现断点对话框。

请参见

任务

如何:在运行测试时进行调试

其他资源

如何: 启用 asp 调试。NET 应用程序的