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