如何在Visual Studio中设置GoogleTest和GoogleMock?

问题描述 投票:0回答:1

使用Visual Studio 2017/2019,可以很容易地设置一个新的GoogleTest项目并开始编写测试(只要您始终不介意使用旧版本的GoogleTest即可。)微软甚至还标出了不错的how-to

但是也要使用GoogleMock吗?您可能会认为,由于Google早前将gtest / gmock组合在一起,所以这才行得通。只需#include "gmock/gmock.h"并嘲笑。但是不,模板自动添加的GoogleTest NuGet package根本不包含gmock文件夹。

[尝试添加第二个GoogleMock NuGet程序包会导致多个问题,例如gtest / gmock版本不匹配,包含路径重叠等。

one from Google替换Microsoft GoogleTest NuGet程序包会导致链接错误:

MSVCRTD.lib(exe_main.obj) : error LNK2019: unresolved external symbol _main referenced in function "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ)

那么,在Visual Studio中设置GoogleTest / GoogleMock的当前推荐(最痛苦的方式)是什么?应该可以通过“测试资源管理器”发现,运行和调试测试。

c++ visual-studio googletest googlemock
1个回答
0
投票

这些是我最终到达的步骤,以使GoogleTest / GoogleMock在本地Google Test项目中一起工作:

  1. 通过Google测试模板创建一个新项目。详细必要时找到here的说明。
  2. 右键单击项目> 管理NuGet软件包...
  3. 卸载Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static程序包。
  4. 从Google安装最新的gmock package(当前为v1.10.0)。
  5. 找到文件gtest_main.cc并将其添加到项目中。它应该在packages\gmock.1.10.0\lib\native\src\gtest\src\

此时项目应该看起来像这样(如果没有,请尝试UnloadingReloading项目):

Solution Explorer View

最后的配置步骤是禁止对三个Google .cc文件使用Precompiled Headers

enter image description here

打开生成的Test.cpp文件,并在顶部添加#include "gmock/gmock.h"。您现在可以开始使用GoogleMocks编写测试了。

#include "pch.h"
#include "gmock/gmock.h"

class MockTest {
public:
    MOCK_METHOD(void, SomeMethod, ());
};

TEST(TestCaseName, TestName) {
    MockTest mock;
    EXPECT_CALL(mock, SomeMethod);
    mock.SomeMethod();
    EXPECT_EQ(1, 1);
    EXPECT_TRUE(true);
}
© www.soinside.com 2019 - 2024. All rights reserved.