如何:在 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 应用程序的