gMock for Dummies - 如何开始? (Visual-Studio-2019)

gMock for Dummies - How to Getting Started? (Visual-Studio-2019)

我试图根据 gMock for Dummies 的入门创建一个非常简单的 Mock Class。

  1. 我在 VS Studio 2019 中新建了一个空白项目

  2. 我 运行 包管理器 Install-Package gmock -Version 1.8.1 按照这个答案

  3. 已创建的 packages.config 文件

    <?xml version="1.0" encoding="utf-8"?>`
    <packages>
        <package id="gmock" version="1.8.1" targetFramework="native" />
    </packages>
    
  4. 我创建了 1 个文件 Source.cpp

    class Turtle {
        virtual void PenUp();
    };
    
    void Turtle::PenUp() {
        return;
    }
    
    #include "gmock/gmock.h"
    
    class MockTurtle : public Turtle {
    public:
    
        MOCK_METHOD(void, PenUp, (), (override)); // not working see Pic1
    
        MOCK_METHOD0(PenUp, void()); // not working see Pic2
    
    };
    

第二个示例尝试使用类似此答案的语法

图1:

图2:

我现在可以编译我的解决方案了:

  1. 我在 VS Studio 2019 中创建了一个新的空白项目
  2. 我克隆了 google 存储库 googletest
  3. 在我添加的项目属性中C/C++添加。包含目录

    path\to\repo\googlemock
    path\to\repo\googlemock\include
    path\to\repo\googlemock\include\gmock
    path\to\repo\googlemock\include\gmock\internal
    path\to\repo\googletest
    path\to\repo\googletest\include
    path\to\repo\googletest\include\gtest
    path\to\repo\googletest\include\gtest\internal
    
  4. 我创建了 1 个文件Source.cpp

    #include "gmock/gmock.h"
    #include "gtest/gtest.h"
    
    #include "src/gmock-cardinalities.cc"
    #include "src/gmock-internal-utils.cc"
    #include "src/gmock-matchers.cc"
    #include "src/gmock-spec-builders.cc"
    #include "src/gmock.cc"
    
    #include "src/gtest.cc"
    #include "src/gtest-death-test.cc"
    #include "src/gtest-filepath.cc"
    #include "src/gtest-port.cc"
    #include "src/gtest-printers.cc"
    #include "src/gtest-test-part.cc"
    #include "src/gtest-typed-test.cc"
    
    class Turtle {
    public:
        virtual ~Turtle() {}
        virtual void PenUp() = 0;
    };
    
    class MockTurtle : public Turtle {
    public:
    
        //MOCK_METHOD0(PenUp, void()); // working =)
        MOCK_METHOD(void, PenUp, (), (override)); // working =)
    
    };
    
    int main(int, const char* []) {
        return 0;
    }
    

想法来自this blog post

这是如何做到的,Windows 方式。您需要在此处 Windows cmake 安装 https://cmake.org/download/。因为 Cygwin 中捆绑的 cmake NOT 兼容 Visual Studio,您需要 cmake.exe Windows 然后 运行 它来自 DOS 终端。我有 cygwin 用于其他事情,但是对于所有事情 Visual Studio,需要在 DOS 终端中按照 Window 的方式完成。我正在使用 Visual Studio 2019.

git clone https://github.com/google/googletest.git

然后打开DOS终端,赋予PATH已经可以找到cmake.exe。转到克隆 googletest 存储库的位置。

cd googletest
mkdir c:\opt
mkdir build
cd build
cmake -G "Visual Studio 16 2019" -DCMAKE_INSTALL_PREFIX=c:\opt ..

它将生成通常的googletest-distribution.sln Visual Studio 解决方案文件。现在是使用鼠标的时候了。 Double-click 在此解决方案文件上,它将启动 Visual Studio IDE。构建 ALL_BUILDINSTALLALL_BUILD 将生成 *.lib 个文件,INSTALL 会将这些文件复制到 c:\opt 位置。此后,gtest/gmock 库和 headers 应位于 C:\opt\ 文件夹中。