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

更新:2007 年 11 月

可以按逐行代码甚或逐个代码块的形式衡量测试的有效性。可以通过配置测试运行以产生代码覆盖率数据来做到这一点。得到的数据显示在“代码覆盖率结果”窗口和源代码文件中。

当对项目(通常为二进制文件)进行了检测,并在测试运行期间将其加载到了内存中时,就会收集代码覆盖率数据。获取代码覆盖率数据过程介绍了如何选择要检测的文件。

说明:

默认情况下,在运行单元测试时测量代码覆盖率。因此,在运行单元测试时,只有在已关闭代码覆盖率数据收集功能,或者当您希望对其他项目进行检测以收集它们的代码覆盖率数据时,才需要执行获取代码覆盖率数据中的步骤。

测试运行完成后,即可查看代码覆盖率数据;有关更多信息,请参见查看代码覆盖率数据。

还可以合并多组代码覆盖率数据,如如何:合并代码覆盖率数据中所述。有关与合并代码覆盖率数据有关的各种情况的信息,请参见使用合并的代码覆盖率数据

对程序集进行检测和重新签名中所述,必须对经过检测的具有强名称的程序集进行重新签名。指定密钥文件即可启用重新签名。有关更多信息,请参见重新签名程序集。

必须显式地对项目进行检测,只有这样,才能在您运行单元测试之外的其他测试时获取代码覆盖率数据。例如,某个运行手动测试的测试人员可能会启动一个特殊的程序。如果这个程序的二进制文件经过了检测,则将收集代码覆盖率数据。有关更多信息,请参见手动测试概述

获取代码覆盖率数据

获取代码覆盖率数据

  1. 创建代码测试。这些测试既可以是单元测试,也可以是其他测试类型(它们执行您已为其设置了符号并且已为其选择了要检测的适当二进制文件的代码)。

    有关如何创建单元测试的信息,请参见如何:生成单元测试

  2. 打开将用于单元测试的测试运行配置。

    有关更多信息,请参见如何:指定测试运行配置

  3. 单击“代码覆盖率”。

  4. 在“选择要检测的项目”下,选择解决方案的 DLL、可执行文件或目录。例如,如果解决方案的名称为 ClassLibrary1,则选择名为 ClassLibrary1.dll、路径为 <Solution Directory>\ClassLibrary1\bin\Debug 的程序集所对应的复选框。

    说明:

    也可以选择包含测试项目文件的 DLL。这将为测试项目中的方法(而不仅仅是生产代码中的方法)生成代码覆盖率数据。

  5. 单击“应用”,再单击“关闭”。

  6. 运行一个或多个测试。

    有关更多信息,请参见如何:运行选定的测试

    在运行测试时,会收集代码覆盖率数据。有关查看数据的更多信息,请参见查看代码覆盖率数据。

    说明:

    运行 VSPerfMon.exe 可以与代码覆盖率数据的集合进行交互。有关更多信息,请参见 Test Edition 疑难解答中的“代码覆盖率数据和 VSPerfMon.exe”部分。

    无法为运行在 64 位进程中的应用程序收集代码覆盖率数据。因此,如果您在测试此类应用程序时请求了代码覆盖率数据,则测试引擎会在要检测的程序集的可移植可执行 (PE) 标头中设置“32BIT”标志。测试运行完成后,程序集会恢复到其原始状态。

重新签名程序集

重新签名程序集

  1. 打开将用于单元测试的测试运行配置。

    有关更多信息,请参见如何:指定测试运行配置

  2. 单击“代码覆盖率”。

  3. 单击“用于重新签名的密钥文件”文本框旁边的省略号 (…)。

    随即出现“选择一个密钥文件”对话框。

  4. 选择一个密钥文件,然后单击“打开”。

  5. 在测试运行配置编辑器中,单击“应用”,再单击“关闭”。

    如果您要测试多个已签名的程序集,Visual Studio 会尝试重新签名使用您指定的密钥文件签名的所有具有强名称的程序集。有关更多信息,请参见对程序集进行检测和重新签名中的“重新签名程序集”。

查看代码覆盖率数据

先决条件:已经运行已生成代码覆盖率数据的测试,如获取代码覆盖率数据中所述。

查看代码覆盖率数据

  1. 在“测试结果”工具栏上单击“代码覆盖率结果”。或者,也可以单击“测试”菜单上的“窗口”,然后单击“代码覆盖率结果”。

    随即打开“代码覆盖率结果”窗口。

  2. 在“代码覆盖率结果”窗口中,“层次结构”列显示一个节点,其中包含有在上一次测试运行中获取的所有代码覆盖率数据。如果发生了错误,则在此位置(而非根节点中)显示错误信息。如果显示有节点,请将其展开。

    说明:

    默认情况下,该测试运行节点采用 <用户名>@<计算机名> <日期> <时间> 的格式命名。可以在“选项”对话框的“常规”页上更改默认命名方案。有关更多信息,请参见如何:指定测试运行配置

  3. 依次展开程序集、命名空间和成品代码中某个类的节点。

    类中的各行表示类的方法。此表中的列显示了各个方法、类和整个命名空间的覆盖率统计数据。

  4. 双击类中的一个方法所对应的行。

    将打开源代码文件并转到您选择的方法。在此文件中,可以看到代码突出显示效果。通过滚动,可以看到此文件中其他方法的覆盖率。要更改代码行的突出显示颜色,请参见更改代码覆盖率数据的显示。

    说明:

    可以单击“测试工具”工具栏上的按钮以切换文件中代码覆盖率的显示,以及导航到文件中前面的或后面的代码行。

  5. (可选)如果选中了测试项目的 DLL 所对应的复选框,则可以打开包含单元测试的源代码文件,以查看执行了哪些测试方法。

显示不同的代码覆盖率计算

代码覆盖率计算将代码覆盖率总计显示为“代码覆盖率结果”窗口中的列。最多可以启用八列来显示测试运行覆盖的代码以及没有覆盖的代码的计算。可以启用将计算显示为百分比或数值总计的列。也可以启用显示代码行和代码块计算的列。

显示或隐藏代码覆盖率数据列

  1. 右击“代码覆盖率结果”窗口中的任何数据。

  2. 单击“添加/移除列”。

  3. 选中要显示的项旁边的复选框,并清除要移除的项旁边的复选框。

  4. 单击“确定”。

更改代码覆盖率突出显示内容的显示

默认情况下,将使用特定的颜色来指示代码是否被已运行的测试覆盖了。用浅蓝色突出显示的代码行已在测试运行中执行过,而用红褐色突出显示的代码行则还没有执行过。在用米色突出显示的代码行内,有些代码已执行过,有些代码则还没有。

更改代码覆盖率数据的显示

  1. 单击“工具”,然后单击“选项”。

    随即出现“选项”对话框。

  2. 展开“环境”。

  3. 单击“字体和颜色”。

  4. 在“显示其设置”下,选择“文本编辑器”。

  5. 在“显示项”下,选择要更改其显示颜色的代码覆盖率区域。可用的选项有“覆盖率未涉及的区域”、“覆盖率部分涉及的区域”和“覆盖率涉及的区域”。

  6. 更改此代码覆盖率区域的设置。可以更改前景色和背景色、字体、字号和文本的粗体设置。

  7. (可选)更改其他代码覆盖率区域的设置。

  8. 完成上述操作后,单击“确定”。

请参见

任务

如何:运行选定的测试

如何:指定测试运行配置

如何:应用测试运行配置

Test Edition 疑难解答

概念

对程序集进行检测和重新签名

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

其他资源

如何:生成单元测试