更新:2007 年 11 月
在运行一般测试时,可能会遇到以下错误:在 64 位平台上运行一般测试时,无法收集代码覆盖率数据。若要解决此错误,请参见下一部分避开 32 位限制中的信息。
避开 32 位限制
代码覆盖率检测仅在 32 位模式下有效,在 64 位模式下无效。这是由于在针对程序集检测了代码覆盖率数据之后,程序集只能在 32 位模式下加载。
| .gif) 说明: | 
|---|
| 如果您未在收集代码覆盖率数据,那么,当您在 64 位计算机上运行单元测试时,就不会应用这样的限制。这是由于 VSTestHost.exe(用来加载类库的测试引擎)是在 32 位进程中运行的。 | 
对于一般测试,包装应用程序是针对“Any CPU”构建的,它在 64 位计算机上作为 64 位进程执行。当该 64 位进程尝试加载 32 位程序集时,会出现错误。此问题可通过下列方法之一来解决。
如果您的一般测试直接包装成品代码已经编译到的二进制文件,请使用下面的方法:
- 将解决方案配置更改为 x86
如果在一般测试和成品代码二进制文件之间有一层,请使用以下两种方法之一。即,一般测试将中间应用程序作为测试工具来包装。此测试工具接下来运行所测试的成品代码。
- 检测用来加载成品代码二进制文件的应用程序 
- 更改用来加载成品代码二进制文件的应用程序的生成设置 
将解决方案配置更改为 x86
将解决方案配置从“Any CPU”更改为“x86”。
更改解决方案配置
- 右击该解决方案,再单击“属性”。 - 将显示“解决方案属性页”对话框。 
- 在“配置属性”下面单击“配置”。 
- 单击“配置管理器”。 - 将显示“配置管理器”对话框。 
- 在“活动解决方案平台”下面单击“新建”。 - 将出现“新建解决方案平台”对话框。 
- 在“键入或选择新平台”下面单击“x86”。 
- 在“新建解决方案平台”对话框中单击“确定”。 
- 在询问是否要保存所做更改的对话框中,单击“是”。 
- 在“配置管理器”对话框上的“活动解决方案平台”下面,确保“x86”处于选中状态,再单击“关闭”。 
- 在“解决方案属性页”对话框中单击“确定”。 
检测用来加载成品代码二进制文件的应用程序
使用此过程可检测一般测试所包装的中间应用程序或测试工具。该中间应用程序将运行要测试的代码,这会强制该应用程序在 32 位模式下运行。
| .gif) 说明: | 
|---|
| 只有当符号文件可用于要检测的文件时,此过程才适用。 | 
指定要检测的可执行文件
- 在 Visual Studio 中,打开包含一般测试的测试项目。 
- 在解决方案资源管理器中,打开“解决方案项”文件夹。 
- 在“解决方案项”文件夹中,双击 .testrunconfig 文件。 
- 将显示“测试运行配置”对话框。 
- 单击“代码覆盖率”。 
- 在“选择要检测的项目”下面,选择运行成品代码二进制文件的中间应用程序。 .gif) 说明: 说明:- 如果该中间应用程序的二进制文件没有显示在“选择要检测的项目”下面,请单击“添加程序集”. 在“选择要检测的程序集”对话框中,指定该文件,再单击“打开”。 
- 单击“应用”,再单击“关闭”。 
更改用来加载成品代码二进制文件的应用程序的生成设置
使用此过程可检测一般测试所包装的任何中间应用程序或测试工具。该中间应用程序将运行要测试的代码,
在该过程中,将更改该中间应用程序的设置,使其针对 x86 平台生成。
| .gif) 说明: | 
|---|
| 只有当所包装的应用程序是从解决方案中的项目生成时,才能这样做。 | 
更改所包装应用程序的生成设置
- 在解决方案资源管理器中,右击从中生成该中间应用程序的项目,再单击“属性”。 - 这将显示该项目的属性页。 
- 单击“生成”选项卡。 
- 对于“目标平台”,请指定“x86”。 
- 在“文件”菜单上单击“保存选定项”。