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
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
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
.h
/.cpp
files (pch.h
, pch.cpp
, framework.h
, <ProjectName>.cpp
, etc)gtest_main.cc
to the project. It should be in ..\packages\gmock.1.10.0\lib\native\src\gtest\src\
gtest_main.cc
(see related pic above)...\packages\gmock.1.10.0\lib\native\include\
to the test project's Include Directories under VC++ DirectoriesThe 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);
}