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
- Create a new project from the Google Test template. Instructions here if needed.
- Uninstall the Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static NuGet package.
- Install the latest gmock NuGet package from Google (currently v1.10.0).
- Add the file
gtest_main.cc
to the project. It should be in ..packagesgmock.1.10.0lib
ativesrcgtestsrc
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
- Create a new project from the Static Library (C++) template. Instructions here if needed.
- Delete all generated
.h
/.cpp
files (pch.h
, pch.cpp
, framework.h
, <ProjectName>.cpp
, etc)
- Install the latest gmock NuGet package from Google (currently v1.10.0).
- Disable use of Precompiled Headers for the library project (see related pic above).
- Create a new project from the Google Test template. Instructions here if needed.
- Uninstall the Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static NuGet package.
- Add the file
gtest_main.cc
to the project. It should be in ..packagesgmock.1.10.0lib
ativesrcgtestsrc
- Disable use of Precompiled Headers for
gtest_main.cc
(see related pic above).
- Add the library project to the test project's Project References.
- Add
..packagesgmock.1.10.0lib
ativeinclude
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);
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…