【问题标题】:How to Configure GoogleMock in Visual Studio 2017 After Already Installing GoogleTest?已安装 GoogleTest 后如何在 Visual Studio 2017 中配置 GoogleMock?
【发布时间】:2018-04-26 23:11:41
【问题描述】:

我将 Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn 包安装到我的 VS 2017 应用程序解决方案中。这是通过“添加新项目/其他语言/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>

...但据我所知,没有外部依赖项头文件或 .lib 文件可以链接到。我不知道从这里去哪里。 :-)

附:我已经在 Microsoft 的 C++ 论坛上发布了有关 GoogleTest 的问题,但即使 GoogleTest 是通过 Visual Studio 安装的,他们也不会回答此类有关 GoogleTest 的问题。

【问题讨论】:

    标签: visual-studio-2017 googletest googlemock


    【解决方案1】:

    NuGet 上提供了一些糟糕的 Google Test / Google Mock 包,例如这个问题引用的包。您想要的是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中所述。

    【讨论】:

    • 我必须关闭并重新打开 .sln 才能找到 GMock,即使它显示在我的 packages.config 文件中。
    【解决方案2】:

    TLDR;我的解决方案是重命名 Google Mock 包提供的包含文件夹

    来自:

    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 Test 包。卸载一个,您可以在包含路径中查看另一个。

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

    【讨论】:

    • 在#include "gtest/gmock.h" 之后必须做类似的事情,因为 gmock.h 正在使用 #include "gmock/gmock-actions.h"。有些人在没有测试的情况下发布了包。
    【解决方案3】:

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

    【讨论】:

    • #include "gtest\gtest.h" #include "gtest\gmock.h" TEST(TestCaseName, TestName) { EXPECT_EQ(1, 1);预期真(真); } int main(int argc, char** argv) { ::testing::InitGoogleMock(&argc, argv); }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-23
    相关资源
    最近更新 更多