选择检测文件夹
更新:2007 年 11 月
如果您需要在测试二进制文件中的代码时收集代码覆盖率数据,Visual Studio 必须先检测该二进制文件。在检测过程中,会向该二进制文件中添加用来生成代码覆盖率数据的代码。有关检测二进制文件中是否有代码覆盖率数据的更多信息,请参见如何:获取代码覆盖率数据。
您可以对检测过程进行一些控制,具体地说是可以控制执行检测的位置。Visual Studio 可以按以下两种方法之一检测二进制文件:
就地。如果您选择就地检测,Visual Studio 会在您运行测试之前在该二进制文件所在的文件夹中检测该二进制文件。如果该二进制文件是您所创建的应用程序的一部分,则该文件夹就是 Visual Studio 用来生成该二进制文件的文件夹。
在部署文件夹中。如果您未选择就地检测,则 Visual Studio 会检测部署文件夹中的二进制文件。部署文件夹是专门为测试运行而创建的。有关部署过程的更多信息,请参见测试部署概述。
若要决定使用哪个文件夹,请参见确定检测文件夹。有关之后设置文件夹的信息,请参见指定检测文件夹。
确定检测文件夹
如何确定要在其中检测二进制文件的最佳文件夹? 选择就地检测还是选择在部署文件夹中检测,具体取决于您对该二进制文件具有的访问级别以及该二进制文件的类型。
具有有限可用性的二进制文件。在下表中,处于下面的一个或多个状态的任何二进制文件都被称为具有有限可用性的二进制文件:
该二进制文件在多个人之间共享。共享二进制文件的问题是可能产生冲突,因为它同时由多个用户使用。例如,如果两个用户同时开始运行测试,并同时从同一个二进制文件中请求代码覆盖率数据,就会出现这样的问题。
该二进制文件位于网络共享(而非本地计算机)上。
您对该二进制文件具有的是只读访问权限。
具有固定加载位置的二进制文件。对于某些二进制文件,测试执行引擎只能从特定位置加载。在下表中,这样的二进制文件被称作具有固定加载位置的二进制文件。这包括下列类型的文件:
COM 组件
控制面板页面
下表可指导您选择正确的检测文件夹。至于具有特殊考虑因素的情况,请参见其他说明列。
二进制文件的加载位置 |
二进制文件的可用性 |
在该文件夹中检测 |
其他说明 |
固定 |
不受限制 |
就地 |
(无) |
不固定 |
受限制 |
在部署文件夹中 |
(无) |
不固定 |
不受限制 |
两个文件夹均可,但建议您选择“在部署文件夹中”。 |
在选择就地检测之后,如果您在测试运行过程中重新生成经过检测的二进制文件,则测试引擎会检测到重新生成的二进制文件较新,因此不会还原该文件在检测之前的版本,而且会生成一个运行级别的警告。 |
固定 |
受限制 |
就地,但是请参见“其他说明” |
如果您不选择就地检测,将不会检测固定位置中的任何二进制文件。这意味着,尽管测试执行能够成功而且不会生成运行级别的警告,但不会收集代码覆盖率数据。 有关解决方法的建议,请参见位置固定、可用性受限的二进制文件。 |
指定检测文件夹
您可以通过以下两种方法来选择就地检测还是在部署文件夹中检测:
要使您选择的选项成为默认设置,请转到 Visual Studio 的“工具”菜单上的“选项”对话框。要找到此设置,请在“测试执行”页上的“测试工具”节点下查找。
您还可以为特定的测试运行配置指定检测文件夹。在测试运行配置编辑器中的“代码覆盖率”页上,可以选中“就地检测程序集”。有关更多信息,请参见如何:指定测试运行配置。
位置固定、可用性受限的二进制文件
测试引擎必须能够修改要就地检测的二进制文件。为此,请检查以下条件:
该二进制文件不得设置只读属性。如果您对该文件具有足够的权限,可以更正此设置。
测试引擎必须有权检测该二进制文件。这意味着运行测试的用户应当具有修改二进制文件所需的特权。由于检测是由主机应用程序执行的,因此,无论是在本地执行还是远程执行,需要这些特权的帐户就是用来执行 devenv.exe 或 MSTest.exe 的帐户。此帐户属于下列用户:运行 Visual Studio 的用户、执行过 MSTest.exe 命令的用户或者启动生成(而该生成正在运行测试)的用户。
该二进制文件不得由另一个程序使用或锁定。要更正此问题,您必须要么结束锁定该二进制文件的程序,要么等待它完成。
如果测试引擎仍无法检测一个或多个二进制文件,就会生成一个运行级别的警告。