如何在 Visual Studio 2017 安装 GoogleTest 后配置 GoogleMock?

How to Configure GoogleMock in Visual Studio 2017 After Already Installing GoogleTest?

我将 Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn 包安装到我的 VS 2017 应用程序解决方案中。这是通过 "Add New Project/Other Languages/C++/Test/Google Test".

向我的解决方案添加一个新的 GoogleTest 项目来实现的

测试运行良好,但现在我准备尝试使用 gmock 进行一些模拟。所以,我通过 NuGet 安装了 googlemock。v140.windesktop.static.rt-dyn,但我不知道如何将它集成到我的测试项目中。

我的 packages.config 看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="googlemock.v140.windesktop.static.rt-dyn" version="1.7.0.1"  targetFramework="native" />
  <package id="Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn" version="1.8.0" targetFramework="native" />
</packages>

...但据我所知,link 没有外部依赖性头文件或 .lib 文件。我不知道从这里去哪里。 :-)

P.S。我已经在 Microsoft 的 C++ 论坛上发布了有关 GoogleTest 的问题,但他们不会回答有关 GoogleTest 的这类问题,即使它是通过 Visual Studio.

安装的

我偶然发现了我自己的问题的答案。通过 NuGet 安装 gmock 后,我尝试在我的测试项目的 .cpp 中键入 #include "gmock/gmock.h" #include "gtest/gtest.h".那没有用。我查看了 "External Dependencies" 文件夹中是否有任何对 gmock 的引用,但没有找到。在我用 #include "gtest/gmock.h" 替换 #include "gmock/gmock.h" 之前,我一直很困惑。那时没有产生任何错误。我看起来像是在做一些 google 类型的模拟。

TLDR;我的解决方案是重命名 Google 模拟包

提供的包含文件夹

来自:

packages\googlemock.v140.windesktop.static.rt-dyn.1.7.0.1\build\native\include\gtest

packages\googlemock.v140.windesktop.static.rt-dyn.1.7.0.1\build\native\include\gmock


我这里有完全相同的情况(相同的包版本),但我用另一种方式解决了(因为@R.Evans 的解决方案不起作用)。

我注意到打开 Google Mock 包有一个名为 gtest 而不是 gmock 的文件夹,这个名字是 hiding Google 测试包。卸载一个,您可以在包含路径中查看另一个。

此外,所有 Google Mock header 都使用 gmock 作为其 header 的主要路径,因此 header 文件夹名为 gtest Visual Studio 即使在 Google 模拟源代码中也报告了大量错误。

NuGet 上有一些不好的 Google 测试/Google 模拟包,例如这个问题引用的包。您想要的是 the gmock package 由 Google Inc 编写(撰写本文时为 v1.8.1 版)。

安装此包后,您项目的 packages.config 应该如下所示:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="gmock" version="1.8.1" targetFramework="native" />
</packages>

您只需添加

即可开始使用 GMock
#include "gmock\gmock.h"

documentation所述。