我们的产品以前在 Visual Studio 2008 中构建并使用 GoogleMock 1.5.0。
现在,将我们的产品移植到Visual Studio 2010后,任何使用 GoogleMock 的单元测试 DLL 都不会加载到 Visual Studio 的测试视图中,因此无法执行。
我们的生产代码是用从 C++ DLL 导出的本机 C++ 类编写的。
我们的单元测试是用 C++/CLI 编写的,因此它们可以直接托管在 Visual Studio 中。C++/CLI 单元测试运行我们的原生 C++ 类,而 GoogleMocks 以前在这种情况下玩得非常开心。
我们将 GoogleMock 构建到在运行时使用多线程 DLL 的静态库中。我们所有的生产代码也使用多线程 DLL。
我们已经尝试过 GoogleMock 1.5 和 1.6 RC,它们都在 VS2010 中重建。但是这两个版本的 GoogleMock 都会出现问题。
要重现,只需:
- 创建一个新的 C++ 单元测试项目
- 添加gmock.lib和gmock_main.lib作为链接器输入
#include <gmock/gmock.h>
在 C++/CLI 单元测试头文件的顶部。
该项目将构建良好,但 VS 测试视图无法加载新的单元测试 DLL。如果您注释掉gmock.h
包含,DLL 将加载到测试视图中,并且它的测试装置将执行。
我希望另一位 VS2010 开发人员遇到此问题并可以提出修复建议。
我的设置:
- 视窗 7 x64
- Visual Studio 2010,服务包 1
- GoogleMock 1.5 或 1.6 RC
- 我们的应用程序构建为 32 位(Win32 和 x86)。
- 我们所有的 C++ 代码,包括 GoogleMock,都是使用 VS2010 的 vc100 编译器编译的。我们的 C++/CLI 代码也是为 .NET 4.0 构建的。
谢谢。