gpt4 book ai didi

c++ - 如何在 Visual Studio 中使用 GoogleMock?

转载 作者:行者123 更新时间:2023-12-03 06:53:45 24 4
gpt4 key购买 nike

这将是一个 self-answered, FAQ-style 的问题。请参阅下面的答案。
使用 Visual Studio 2017/2019,设置新的 Google Test project 并开始编写测试非常容易(只要您不介意使用旧版本的 GoogleTest 版本)。
但是如何使用 GoogleMock 呢?你会认为自从谷歌前一段时间合并了 gtest/gmock 后,这会起作用。只是 #include "gmock/gmock.h" 并 mock 。但是不,模板自动添加的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 的推荐(也是最不痛苦的)方式是什么?应该能够通过测试资源管理器发现、运行和调试测试。

最佳答案

我找到了两种设置方法:将整个 GoogleTest 框架直接编译到每个测试项目中,或者创建一个库项目来保存它。使用库将缩短构建时间,但您需要确保库和测试项目上的编译/链接选项相同。
选项1:在测试项目中直接编译GoogleTest

  • Google Test 模板创建一个新项目。如果需要,说明 here
  • 卸载 Microsoft.googletest.v140.windesktop.msvcSTL.static.rt-static NuGet 包。
  • 安装来自 Google 的最新 gmock NuGet 包(当前为 v1.10.0)。
  • 将文件 gtest_main.cc 添加到项目中。它应该在 ..\packages\gmock.1.10.0\lib\native\src\gtest\src\

  • 此时项目应该看起来像这样(如果不是,请尝试卸载并重新加载项目):
    Solution Explorer View
    最后的配置步骤是禁用三个 Google .cc 文件的 Precompiled Headers 的使用(重要:也请注意空字段)。
    enter image description here
    选项 2:在静态库项目中使用 GoogleTest
  • 静态库 (C++) 模板创建一个新项目。如果需要,说明 here
  • 删除所有生成.h/.cpp文件(pch.hpch.cppframework.h<ProjectName>.cpp等)
  • 安装来自 Google 的最新 gmock NuGet 包(当前为 v1.10.0)。
  • 禁用库项目的预编译头文件(见上面的相关图片)。
  • Google Test 模板创建一个新项目。如果需要,说明 here
  • 卸载 Microsoft.googletest.v140.windesktop.msvcSTL.static.rt-static NuGet 包。
  • 将文件 gtest_main.cc 添加到项目中。它应该在 ..\packages\gmock.1.10.0\lib\native\src\gtest\src\
  • 禁止使用 gtest_main.cc 的预编译头(见上面的相关图片)。
  • 将库项目添加到测试项目的项目引用中。
  • ..\packages\gmock.1.10.0\lib\native\include\添加到测试项目的 包含目录 0x291919213141231921314123141231231412312312313131313131313131之间的目录13141213141314131413141314131413141之间的目录

    enter image description here
    解决方案结构现在应如下所示:
    enter image description here
    编写测试

    无论哪种方式,您现在都可以开始使用 GoogleMock 编写测试了。将 #include "gmock/gmock.h" 添加到 pch.h 文件中:
    //
    // pch.h
    // Header for standard system include files.
    //

    #pragma once

    #include "gtest/gtest.h"
    #include "gmock/gmock.h"
    打开生成的Test.cpp文件试试看。
    #include "pch.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);
    }

  • 关于c++ - 如何在 Visual Studio 中使用 GoogleMock?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60486110/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com