为单元测试配置过程体系结构

本文提供有关用于运行单元测试的进程体系结构、如何设置进程体系结构以及如何将单元测试作为 64 位进程运行的信息。

本文介绍如何设置单元测试的进程体系结构以及如何将单元测试作为 64 位进程运行。

为 MSTest 项目配置进程体系结构

对于使用 Visual Studio 测试平台(VSTest)作为测试运行程序的 MSTest 项目,默认目标平台(进程体系结构)与操作系统的体系结构匹配。 对于设置为“任意 CPU”作为目标平台的项目,可以使用测试资源管理器设置(如下图所示)或使用“测试”菜单覆盖此行为

显示用于选择 AnyCPU 处理器体系结构的菜单的屏幕截图。

在“测试”菜单中,选择“AnyCPU 项目的处理器体系结构”

对于使用 MSTest 作为测试运行程序而不是 VSTest 的项目,体系结构严格由 MSBuild 和运行时规则确定。 可执行文件是根据 MSBuild/运行时设置中指定的首选体系结构生成的。 可以使用 MSBuild 属性(例如,PreferNativeArm64)调整此首选项,但不能使用 AnyCPU 项目的 处理器体系结构设置 来更改这些项目的体系结构。

说明

使用 MSTest 项目模板或使用 MSBuild 属性创建单元测试项目时,可以设置测试运行程序。 有关 MSTest 和 VSTest 测试运行程序之间的差异的详细信息,请参阅 Microsoft.Testing.Platform 和 VSTest 比较

PreferNativeArm64 (MSTest)

使用 PreferNativeArm64 MSBuild 属性时,项目首选在 ARM64 体系结构上运行本地代码(如果可用)。 此属性适用于生成可执行文件并遵循 MSBuild 运行时规则的项目。 对于 Visual Studio 测试平台(VSTest)测试运行器,此设置将被忽略,仅适用于配置了 MSTest 作为测试运行器的 MSTest 项目。

以 64 位进程的形式运行单元测试

如果有 64 位计算机,则可以以 64 位进程的形式运行单元测试并捕获代码覆盖率信息。

若要以 64 位进程的形式运行单元测试,

  1. 如果代码或测试已编译为 32 位/x86,但现在想要将其作为 64 位进程运行,请将其重新编译为 任何 CPU

    提示

    为了获得最大的灵活性,请使用 任何 CPU 配置编译测试项目。 然后,可以在 32 位和 64 位代理上运行。 使用 64 位 配置编译测试项目没有好处,除非调用仅支持 64 位的代码。

  2. 将单元测试设置为作为 64 位进程运行。

    在 Visual Studio 菜单中,选择“测试”,然后选择“AnyCPU 项目的处理器体系结构”。 选择 x64 以 64 位进程的形式运行测试。

    - 或 -

    .runsettings 文件中指定 <TargetPlatform>x64</TargetPlatform>。 此方法的优点是可以指定不同文件中的设置组,并在不同设置之间快速切换。 还可以在解决方案之间复制设置。 有关详细信息,请参阅 使用 .runsettings 文件配置单元测试。

    说明

    在 MSTest 项目中,如果将测试运行程序设置为 MSTest 而非 VSTest,则不支持 AnyCPU 项目的 处理器体系结构 设置。