How to use GoogleMock in Visual Studio?

前端 未结 1 1599
暗喜
暗喜 2021-01-06 10:43

This is going to be a self-answered, FAQ-style question. See answer below.

With Visual Studio 2017/2019 it is really easy to set up a new Google Test project and star

相关标签:
1条回答
  • 2021-01-06 11:25

    I've found two ways to set this up: Either compile the whole GoogleTest framework directly into each of the test projects, or create a library project to hold it. Using a library will give faster build times, but you'll need to make sure that compile/link options are the same on the library and the test projects.

    Option 1: Compiling GoogleTest Directly in the Test Project


    1. Create a new project from the Google Test template. Instructions here if needed.
    2. Uninstall the Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static NuGet package.
    3. Install the latest gmock NuGet package from Google (currently v1.10.0).
    4. Add the file gtest_main.cc to the project. It should be in ..\packages\gmock.1.10.0\lib\native\src\gtest\src\

    At this point the project should look something like this (if it doesn't, try Unloading and Reloading the project):

    The final configuration step is to disable use of Precompiled Headers for the three Google .cc files (Important: Notice the empty fields too).

    Option 2: Using GoogleTest in a Static Library Project


    1. Create a new project from the Static Library (C++) template. Instructions here if needed.
    2. Delete all generated .h/.cpp files (pch.h, pch.cpp, framework.h, <ProjectName>.cpp, etc)
    3. Install the latest gmock NuGet package from Google (currently v1.10.0).
    4. Disable use of Precompiled Headers for the library project (see related pic above).
    5. Create a new project from the Google Test template. Instructions here if needed.
    6. Uninstall the Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static NuGet package.
    7. Add the file gtest_main.cc to the project. It should be in ..\packages\gmock.1.10.0\lib\native\src\gtest\src\
    8. Disable use of Precompiled Headers for gtest_main.cc (see related pic above).
    9. Add the library project to the test project's Project References.
    10. Add ..\packages\gmock.1.10.0\lib\native\include\ to the test project's Include Directories under VC++ Directories

    The solution structure should now look something like this:

    Writing the Tests


    Either way, you are now ready to start writing tests using GoogleMock. Add #include "gmock/gmock.h" to the pch.h file:

    //
    // pch.h
    // Header for standard system include files.
    //
    
    #pragma once
    
    #include "gtest/gtest.h"
    #include "gmock/gmock.h"
    

    Open the generated Test.cpp file and try it.

    #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);
    }
    
    0 讨论(0)
提交回复
热议问题