visual-studio-2010 - Visual Studio 2010 和 MSTest (C++/CLI) 的 GoogleMock 问题

标签 visual-studio-2010 mstest googlemock

我们的产品之前是在 Visual Studio 2008 中构建的,并使用了 GoogleMock 1.5.0。

现在,将我们的产品移植到 Visual Studio 2010 后,任何使用 GoogleMock 的单元测试 DLL 都不会加载到 Visual Studio 的测试 View 中,因此无法执行。

我们的生产代码是用从 C++ DLL 导出的 native C++ 类编写的。

我们的单元测试是用 C++/CLI 编写的,因此它们可以直接托管在 Visual Studio 中。 C++/CLI 单元测试锻炼了我们的原生 C++ 类,而 GoogleMocks 以前在这种情况下玩得很开心。

我们将 GoogleMock 构建到在运行时使用多线程 DLL 的静态库中。我们所有的生产代码也使用多线程 DLL。

我们已经尝试过 GoogleMock 1.5 和 1.6 RC,它们都在 VS2010 中重建。但问题出现在两个版本的 GoogleMock 中。

要重现,只需:

  1. 创建一个新的 C++ 单元测试项目
  2. 添加gmock.libgmock_main.lib 作为链接器输入
  3. #include <gmock/gmock.h>在 C++/CLI 单元测试头文件的顶部。

项目可以正常构建,但 VS 测试 View 无法加载新的单元测试 DLL。如果您注释掉 gmock.h包含后,DLL 将加载到测试 View 中,并且将执行其测试装置。

我希望另一位 VS2010 开发人员遇到了这个问题,并且可以提出修复建议。

我的设置:

  • Windows 7 x64
  • Visual Studio 2010,Service Pack 1
  • GoogleMock 1.5 或 1.6 RC
  • 我们的应用程序构建为 32 位(Win32 和 x86)。
  • 我们所有的 C++ 代码,包括 GoogleMock,都是使用 VS2010 的 vc100 编译器编译的。我们的 C++/CLI 代码也是为 .NET 4.0 构建的。

谢谢。

最佳答案

使用与 dripfeed 相同的代码设置(使用 Google Mock 通过 MSTest 测试 c++ 原生类),我们通过使用/CLR 编译设置构建 Google Mock 来让 Google Mock 1.6 工作。

我们现在已经成功地使用 Google Mock 实现了一些测试!

注意:放置/CLR 设置可能需要调整其他编译设置。

关于visual-studio-2010 - Visual Studio 2010 和 MSTest (C++/CLI) 的 GoogleMock 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5497879/

相关文章:

asp.net - 对 ASP.NET 网站进行负载测试

visual-studio - 运行 .webtest 测试结果为 ".webtest is not a valid extension"

c++ - 为什么 MOCK_METHOD 语法在 GMock 中不起作用?

c# - TestContext.DataRow ["MyColumnName"的替代品是什么]

asp.net-mvc - 如何在 MSTest 中对 JsonResult 和集合进行单元测试

c++ - 如何避免使用 Google Mock 的指针?

c++ - GMock : error: cannot convert ‘cv::MatExpr’ to ‘bool’ in return

c++ - 在VS2010 C++中解析 "found ' {' at file scope (missing function header?)"

c - 在 visual studio 2010 中使用 C 时序问题

javascript - 在正则表达式中转义撇号?