针对 Visual Studio 2012 本机 C++ 测试从命令行运行 mstest

Posted

技术标签:

【中文标题】针对 Visual Studio 2012 本机 C++ 测试从命令行运行 mstest【英文标题】:Running mstest from command line against Visual Studio 2012 native C++ tests 【发布时间】:2013-02-26 10:12:38 【问题描述】:

我有一个带有许多本机 C++ 测试项目的 Visual Studio 2012 解决方案。 我可以使用测试资源管理器选项卡在 Visual Studio 2012 中正确并成功地运行所有这些。

但是,从命令行运行时,我无法运行测试。

按照文档,我一直在运行以下命令行

mstest /testcontainer:PathToTestProject\Win32\Release\testproject.dll

我也需要跑

mstest /testcontainer:PathToTestProject\x64\Release\testproject.dll

用于64位版本代码的测试。

当我运行这些命令行时,我收到以下错误消息。

Microsoft (R) 测试执行命令行工具版本 11.0.50727.1 版权所有 (c) 微软公司。保留所有权利。

正在加载 PathToTestProject\Win32\Release\testproject.dll... PathToTestProject\Win32\Release\testproject.dll 无法加载测试容器 PathToTestProject\Win32\Release\testproject.dll' 或其依赖项之一。如果您将测试项目程序集构建为 64 位程序集,则无法加载它。构建测试项目程序集时,为平台选择“任何 CPU”。要在 64 位处理器上以 64 位模式运行测试,您必须在“主机”选项卡中更改测试设置以在 32 位进程中运行测试。错误详细信息:无法加载文件或程序集 'file:///c:\PathToTestProject\Win32\Release\testproject.dll' 或其依赖项之一。该模块应包含程序集清单。

代码是原生 c++,有两种构建配置,一种在 Win32 平台上,另一种在 x64 平台上。我不能有 AnyCPU 平台配置。 为了能够从命令行运行测试,我在这里缺少什么?

【问题讨论】:

【参考方案1】:

找了好久,终于发现了一个非常隐蔽的msdn文档页面 here 说明 mstest 与不同测试项目类型的兼容性。 事实证明,mstest 与本机单元测试不兼容(msdn 很高兴在一个容易找到的位置记录这一点)。 相反,对于本机单元测试项目,您需要使用运行的 Visual Studio 测试 (vstest.console.exe) 而不是 msbuild。

例如

vstest.console.exe /Platform:x64 PathToTestProject\x64\Release\testproject.dll

【讨论】:

以上是关于针对 Visual Studio 2012 本机 C++ 测试从命令行运行 mstest的主要内容,如果未能解决你的问题,请参考以下文章

从 Visual Studio 2012 调试 VB6 代码

在 Visual Studio 2012 中调试 C++ 代码时跳过 STL 代码?

Visual Studio 调试器显示本机类型的错误值

Visual Studio调试本机代码

React 本机流程、打字稿和 Visual Studio Code

Visual Studio 2017 上的 Xamarin 本机 Windows 应用程序开发