gMock for Dummies - 如何开始? (Visual-Studio-2019)
Posted
技术标签:
【中文标题】gMock for Dummies - 如何开始? (Visual-Studio-2019)【英文标题】:gMock for Dummies - How to Getting Started? (Visual-Studio-2019) 【发布时间】:2019-07-31 09:11:09 【问题描述】:我尝试按照 gMock for Dummies 的入门创建一个非常简单的 Mock 类。
我在 VS Studio 2019 中新建了一个空白项目
我按照这个答案 Configure GoogleMock 运行了包管理器 Install-Package gmock -Version 1.8.1
创建的 packages.config 文件
<?xml version="1.0" encoding="utf-8"?>`
<packages>
<package id="gmock" version="1.8.1" targetFramework="native" />
</packages>
我创建了 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
;
第二个例子尝试了类似这个答案How to mock method的语法
图1:
图2:
【问题讨论】:
问题是特定于您的机器/代码。你的例子只是works in both versions。在您没有显示的代码中做了一些不好的事情。 还有一些事情应该在bit different way 中完成。 我将您的代码示例复制并粘贴到我的 Source.cpp 中,Visual Studio 仍然会告诉我“未找到 'MOCK_METHOD' 的函数定义。”除了我展示的 link 的 Source.cpp 和 packages.config 之外,项目中也没有任何内容 澄清一下:这是构建问题还是 IDE 显示的警告?未安装 ReSharper 的 AFAIK Visual Studio IDE 在看到来自 gtest/gmock 的一些宏时会显示一些误报警告。 您的 gMock-for-dummies 链接已过时且已损坏。新链接是google.github.io/googletest/gmock_for_dummies.html 【参考方案1】:这里是如何做到这一点,Windows 方式。您需要在此处安装 Windows cmake
https://cmake.org/download/。因为 Cygwin 中捆绑的 cmake
与 Visual Studio 不兼容,所以您需要 Windows 的 cmake.exe
,然后从 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 解决方案文件。现在是使用鼠标的时候了。双击此解决方案文件,它将启动 Visual Studio IDE。构建 ALL_BUILD 和 INSTALL。 ALL_BUILD
将生成 *.lib
文件,INSTALL
将这些文件复制到 c:\opt
位置。在此之后,gtest/gmock 库和头文件应位于C:\opt\
文件夹中。
【讨论】:
当我按照您的建议构建 googltest - 生成的解决方案构建良好。但我需要一个x86
版本,所以我添加了-A Win32
选项。这样,由于gtest-port.h(2194,20): error C2039: 'int_t': is not a member of 'std'
,生成的解决方案无法编译。知道如何正确构建 googletest 的 x86 version
吗?【参考方案2】:
我现在可以编译我的解决方案了:
-
我在 VS Studio 2019 中新建了一个空白项目
我克隆了谷歌仓库googletest
在项目属性中我添加了 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
我创建了 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
【讨论】:
以上是关于gMock for Dummies - 如何开始? (Visual-Studio-2019)的主要内容,如果未能解决你的问题,请参考以下文章
如何在 pyqt 中嵌入 matplotlib - For Dummies
如何在 pyqt 中嵌入 matplotlib - For Dummies