使用合并的代码覆盖率数据

更新:2007 年 11 月

如何:合并代码覆盖率数据中所述,可以合并通过多次测试运行或从多个测试者获得的代码覆盖率数据。还可以保存合并代码覆盖率数据的结果,然后重新导入该结果。以下各节阐述了使用代码覆盖率数据的各个方面。

合并测试结果的限制

下面的列表突出显示合并和导入覆盖率数据时可能遇到的最常见限制:

  • 导入 XML 数据 - 如果从 XML 文件导入代码覆盖率数据,则只能看到行覆盖率的统计信息,看不到块覆盖率的统计信息。有关更多信息,请参见导出和导入合并的测试结果。

  • 合并测试运行的数据 - 如果合并包含 ASP.NET 测试运行的测试结果,则“代码覆盖率结果”窗口将在包含单独计算的单独节点中显示 ASP.NET 项目的数据。有关更多信息,请参见合并 ASP.NET 测试结果的数据。

  • 在测试运行之间重新编译代码 - 如果在测试运行之间重新编译成品代码,然后尝试合并这些结果,则合并可能会失败。有关更多信息,请参见导入代码覆盖率数据文件。

导出和导入合并的测试结果

合并测试结果之后,可以通过将合并操作的结果导出为 XML 文件来进行保存。有关导出的更多信息,请参见如何:导出测试结果

此 XML 文件中包含所有合并的代码覆盖率数据,如果重新导入该文件则可以看到这些数据。其中包含有关代码行和代码块的统计信息。

说明:

可以配置“代码覆盖率”窗口的列,以显示代码行和代码块的不同数据,例如,在测试过程中涉及的、未涉及的以及部分涉及的代码行的百分比。

但是,如果重新导入此 XML 文件,然后将该文件与其他代码覆盖率数据合并,则只保留有关行覆盖率的统计信息,而不保留有关块覆盖率的统计信息。

合并 ASP.NET 测试结果的数据

可以合并包括一个或多个 ASP.NET 测试运行的结果,但“代码覆盖率结果”窗口分别在不同节点(而不是单个合并节点)的“合并的结果”下显示 ASP.NET 数据。也就是说,虽然会显示所有选定测试运行(包括那些包含 ASP.NET 测试的运行)的数据,但不执行任何统计计算来合并 ASP.NET 代码覆盖率数据。这表明,对于每个测试运行,ASP.NET 测试的数据显示在单独的节点中,而不是合并在一起显示在单个节点下。

此限制只适用于 ASP.NET 项目。在 ASP.NET 测试运行过程中,在测试其他二进制文件时可以收集代码覆盖率数据,包括 ASP.NET 项目引用的 DLL 和已添加到 ASP.NET 项目中的程序集。此时,特定二进制文件的代码覆盖率数据显示在单个合并节点的“合并的结果”下。

导入代码覆盖率数据文件

在收集代码覆盖率数据时,该数据以本机格式存储在扩展名为 .coverage 的文件中。当您测试运行后查看代码覆盖率数据时,Visual Studio 通过打开生成的 .coverage 文件来显示该数据。并且,Visual Studio 与 .coverage 文件扩展名关联,这表明如果在 Windows 资源管理器中双击此类文件,文件将在 Visual Studio 中自动打开。

只有在显式导出时,测试结果数据(包括代码覆盖率数据)才以 XML 格式存储。将代码覆盖率数据作为 XML 文件导出的唯一原因是为了保存多个代码覆盖率结果的合并结果。

可以使用“代码覆盖率结果”窗口工具栏上的“导入”按钮导入 .coverage 文件。如果执行此操作,请注意以下事项:

  • 若要打开 .coverage 文件,Visual Studio 必须能在磁盘上找到检测的程序集及其程序调试数据库文件(其扩展名为 .pdb)。

  • 在导入此文件类型时,Visual Studio 会搜索包含 .coverage 文件的目录以及在测试程序集时包含程序集的目录。为此,Visual Studio 使用 _NT_SYMBOL_PATH 和 VSCOVER_BINPATH 变量。如果 _NT_SYMBOL_PATH 变量设置为包含符号的目录,VSCOVER_BINPATH 设置为包含程序集的目录,则 Visual Studio 可以找到文件并打开 .coverage 文件。但如果 Visual Studio 在上述任一路径中找不到符号或程序集,则无法打开 .coverage 文件。如果您尝试直接导入 .coverage 文件,那么了解这些路径和变量设置的重要性会大有裨益。

  • 包含测试结果的 XML 文件不会展示此行为。XML 文件是独立的文件,不需要同时打开程序集或 .pdb 文件。

  • 如果导入多个 .coverage 文件,则能够同时看到有关块和行的统计信息。但是,如果以两种文件格式(即 .coverage 和 XML)导入代码覆盖率数据,那么只能看到有关行覆盖率的统计信息,看不到有关块覆盖率的统计信息。

请参见

任务

如何:获取代码覆盖率数据

如何:合并代码覆盖率数据

如何:导出测试结果

如何:导入测试结果