编译
VS 2022
- 文件结构

cmake
cmake .-- Building for: Visual Studio 17 2022-- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.19042.-- The C compiler identification is MSVC 19.30.30528.0-- The CXX compiler identification is MSVC 19.30.30528.0-- Detecting C compiler ABI info-- Detecting C compiler ABI info - done-- Check for working C compiler: C:/Program Files/Microsoft Visual Studio/2022/Preview/VC/Tools/MSVC/14.30.30528/bin/Hostx64/x64/cl.exe - skipped-- Detecting C compile features-- Detecting C compile features - done-- Detecting CXX compiler ABI info-- Detecting CXX compiler ABI info - done-- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio/2022/Preview/VC/Tools/MSVC/14.30.30528/bin/Hostx64/x64/cl.exe - skipped-- Detecting CXX compile features-- Detecting CXX compile features - done-- Found Python: C:/DevelopSoftware/Python/Python39/python.exe (found version "3.9.5") found components: Interpreter-- Looking for pthread.h-- Looking for pthread.h - not found-- Found Threads: TRUE-- Configuring done-- Generating done-- Build files have been written to: C:/DevelopProject/SourceCode/googletest/googletest-release-1.11.0

Build
Build started...1>------ Build started: Project: ZERO_CHECK, Configuration: Debug x64 ------1>Checking Build System2>------ Build started: Project: gtest, Configuration: Debug x64 ------3>------ Build started: Project: gmock_main, Configuration: Debug x64 ------4>------ Build started: Project: gmock, Configuration: Debug x64 ------2>Building Custom Rule C:/DevelopProject/SourceCode/googletest/googletest-release-1.11.0/googletest/CMakeLists.txt2>gtest-all.cc3>Building Custom Rule C:/DevelopProject/SourceCode/googletest/googletest-release-1.11.0/googlemock/CMakeLists.txt4>Building Custom Rule C:/DevelopProject/SourceCode/googletest/googletest-release-1.11.0/googlemock/CMakeLists.txt3>gtest-all.cc4>gtest-all.cc3>gmock-all.cc4>gmock-all.cc2>gtest.vcxproj -> C:\DevelopProject\SourceCode\googletest\googletest-release-1.11.0\lib\Debug\gtestd.lib5>------ Build started: Project: gtest_main, Configuration: Debug x64 ------5>Building Custom Rule C:/DevelopProject/SourceCode/googletest/googletest-release-1.11.0/googletest/CMakeLists.txt5>gtest_main.cc3>gmock_main.cc4>Generating Code...5>gtest_main.vcxproj -> C:\DevelopProject\SourceCode\googletest\googletest-release-1.11.0\lib\Debug\gtest_maind.lib4>gmock.vcxproj -> C:\DevelopProject\SourceCode\googletest\googletest-release-1.11.0\lib\Debug\gmockd.lib3>Generating Code...3>gmock_main.vcxproj -> C:\DevelopProject\SourceCode\googletest\googletest-release-1.11.0\lib\Debug\gmock_maind.lib6>------ Build started: Project: ALL_BUILD, Configuration: Debug x64 ------6>Building Custom Rule C:/DevelopProject/SourceCode/googletest/googletest-release-1.11.0/CMakeLists.txt========== Build: 6 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
生成的lib:``
...\lib\Debug:gmock_maind.lib, gmockd.lib, gtest_maind.lib, gtestd.lib- 或
...\lib\Release:gmock_main.lib, gmock.lib, gtest_main.lib, gtest.libGCC
VS 2022
Demo_1: 跑起来
配置



- 设置头文件,lib路径,Runtime Library
C/C++->General->Additional Include Directories:..\includeLinker->Input->Additional Dependencies:..\lib\gtest_maind.lib;..\lib\gtestd.libC/C++->Code Genaration->Runtime Library:Muti-threaded Debug (/MTd)
运行
#include <gtest/gtest.h>int Foo(int a, int b){if (a == 0 || b == 0){throw "don't do that";}int c = a % b;if (c == 0)return b;return Foo(b, c);}TEST(FooTest, HandleNoneZeroInput){EXPECT_EQ(2, Foo(4, 10));EXPECT_EQ(6, Foo(30, 18));}
Demo_2
#include <gtest/gtest.h>int main(int argc, char** argv){testing::InitGoogleTest(&argc, argv);return RUN_ALL_TESTS();}
[==========] Running 0 tests from 0 test suites.[==========] 0 tests from 0 test suites ran. (0 ms total)[ PASSED ] 0 tests.
TEST
#include <gtest/gtest.h>TEST(TestName, Subtest_1){ASSERT_TRUE(1 == 1);}int main(int argc, char** argv){testing::InitGoogleTest(&argc, argv);return RUN_ALL_TESTS();}
[==========] Running 1 test from 1 test suite.[----------] Global test environment set-up.[----------] 1 test from TestName[ RUN ] TestName.Subtest_1[ OK ] TestName.Subtest_1 (0 ms)[----------] 1 test from TestName (0 ms total)[----------] Global test environment tear-down[==========] 1 test from 1 test suite ran. (1 ms total)[ PASSED ] 1 test.
#include <gtest/gtest.h>TEST(TestName, Subtest_1){ASSERT_TRUE(1 == 2);}int main(int argc, char** argv){testing::InitGoogleTest(&argc, argv);return RUN_ALL_TESTS();}
[==========] Running 1 test from 1 test suite.[----------] Global test environment set-up.[----------] 1 test from TestName[ RUN ] TestName.Subtest_1D:\LearnProject\googletest\01_Demo_2\01_Demo_2.cpp(5): error: Value of: 1 == 2Actual: falseExpected: true[ FAILED ] TestName.Subtest_1 (0 ms)[----------] 1 test from TestName (1 ms total)[----------] Global test environment tear-down[==========] 1 test from 1 test suite ran. (2 ms total)[ PASSED ] 0 tests.[ FAILED ] 1 test, listed below:[ FAILED ] TestName.Subtest_1
#include <gtest/gtest.h>TEST(TestName, Subtest_1){ASSERT_TRUE(1 == 2);}TEST(TestName, Subtest_2){ASSERT_TRUE(1 == 2);}int main(int argc, char** argv){testing::InitGoogleTest(&argc, argv);return RUN_ALL_TESTS();}
[==========] Running 2 tests from 1 test suite.[----------] Global test environment set-up.[----------] 2 tests from TestName[ RUN ] TestName.Subtest_1D:\LearnProject\googletest\01_Demo_2\01_Demo_2.cpp(5): error: Value of: 1 == 2Actual: falseExpected: true[ FAILED ] TestName.Subtest_1 (0 ms)[ RUN ] TestName.Subtest_2D:\LearnProject\googletest\01_Demo_2\01_Demo_2.cpp(10): error: Value of: 1 == 2Actual: falseExpected: true[ FAILED ] TestName.Subtest_2 (0 ms)[----------] 2 tests from TestName (1 ms total)[----------] Global test environment tear-down[==========] 2 tests from 1 test suite ran. (2 ms total)[ PASSED ] 0 tests.[ FAILED ] 2 tests, listed below:[ FAILED ] TestName.Subtest_1[ FAILED ] TestName.Subtest_2
#include <gtest/gtest.h>TEST(TestName1, Subtest_1){ASSERT_TRUE(1 == 2);}TEST(TestName2, Subtest_1){ASSERT_TRUE(1 == 2);}int main(int argc, char** argv){testing::InitGoogleTest(&argc, argv);return RUN_ALL_TESTS();}
[----------] Global test environment set-up.[----------] 1 test from TestName1[ RUN ] TestName1.Subtest_1D:\LearnProject\googletest\01_Demo_2\01_Demo_2.cpp(5): error: Value of: 1 == 2Actual: falseExpected: true[ FAILED ] TestName1.Subtest_1 (0 ms)[----------] 1 test from TestName1 (0 ms total)[----------] 1 test from TestName2[ RUN ] TestName2.Subtest_1D:\LearnProject\googletest\01_Demo_2\01_Demo_2.cpp(10): error: Value of: 1 == 2Actual: falseExpected: true[ FAILED ] TestName2.Subtest_1 (0 ms)[----------] 1 test from TestName2 (0 ms total)[----------] Global test environment tear-down[==========] 2 tests from 2 test suites ran. (2 ms total)[ PASSED ] 0 tests.[ FAILED ] 2 tests, listed below:[ FAILED ] TestName1.Subtest_1[ FAILED ] TestName2.Subtest_1
ASSERT
TEST(TestName1, Subtest_1) { ASSERT_FALSE(1 == 2); std::cout << “After Assertion” << std::endl; }
int main(int argc, char** argv) { testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
```shell[==========] Running 1 test from 1 test suite.[----------] Global test environment set-up.[----------] 1 test from TestName1[ RUN ] TestName1.Subtest_1After Assertion[ OK ] TestName1.Subtest_1 (0 ms)[----------] 1 test from TestName1 (0 ms total)[----------] Global test environment tear-down[==========] 1 test from 1 test suite ran. (1 ms total)[ PASSED ] 1 test.
TEST(TestName1, Subtest_1) { ASSERT_FALSE(1 == 1); std::cout << “After Assertion” << std::endl; }
int main(int argc, char** argv) { testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
```shell[==========] Running 1 test from 1 test suite.[----------] Global test environment set-up.[----------] 1 test from TestName1[ RUN ] TestName1.Subtest_1D:\LearnProject\googletest\01_Demo_2\01_Demo_2.cpp(6): error: Value of: 1 == 1Actual: trueExpected: false[ FAILED ] TestName1.Subtest_1 (0 ms)[----------] 1 test from TestName1 (0 ms total)[----------] Global test environment tear-down[==========] 1 test from 1 test suite ran. (1 ms total)[ PASSED ] 0 tests.[ FAILED ] 1 test, listed below:[ FAILED ] TestName1.Subtest_1
TEST(TestName, Subtest_1) { ASSERT_EQ(1, 1); std::cout << “After Assertion” << std::endl; }
int main(int argc, char** argv) { testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
```shell[==========] Running 1 test from 1 test suite.[----------] Global test environment set-up.[----------] 1 test from TestName[ RUN ] TestName.Subtest_1After Assertion[ OK ] TestName.Subtest_1 (0 ms)[----------] 1 test from TestName1 (0 ms total)[----------] Global test environment tear-down[==========] 1 test from 1 test suite ran. (1 ms total)[ PASSED ] 1 test.
#include <gtest/gtest.h>#include <iostream>TEST(TestName, Subtest_1){ASSERT_EQ(1, 2);std::cout << "After Assertion" << std::endl;}int main(int argc, char** argv){testing::InitGoogleTest(&argc, argv);return RUN_ALL_TESTS();}
[==========] Running 1 test from 1 test suite.[----------] Global test environment set-up.[----------] 1 test from TestName[ RUN ] TestName.Subtest_1D:\LearnProject\googletest\01_Demo_2\01_Demo_2.cpp(6): error: Expected equality of these values:12[ FAILED ] TestName.Subtest_1 (0 ms)[----------] 1 test from TestName (0 ms total)[----------] Global test environment tear-down[==========] 1 test from 1 test suite ran. (2 ms total)[ PASSED ] 0 tests.[ FAILED ] 1 test, listed below:[ FAILED ] TestName.Subtest_11 FAILED TEST
EXPECT
TEST(TestName, Subtest_1) { EXPECT_EQ(1, 2); std::cout << “After Assertion” << std::endl; }
int main(int argc, char** argv) { testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
```cpp[==========] Running 1 test from 1 test suite.[----------] Global test environment set-up.[----------] 1 test from TestName[ RUN ] TestName.Subtest_1D:\LearnProject\googletest\01_Demo_2\01_Demo_2.cpp(6): error: Expected equality of these values:12After Assertion[ FAILED ] TestName.Subtest_1 (0 ms)[----------] 1 test from TestName (0 ms total)[----------] Global test environment tear-down[==========] 1 test from 1 test suite ran. (1 ms total)[ PASSED ] 0 tests.[ FAILED ] 1 test, listed below:[ FAILED ] TestName.Subtest_11 FAILED TEST
#include <gtest/gtest.h>#include <iostream>TEST(TestName, Subtest_1){EXPECT_EQ(1, 1);std::cout << "After Assertion" << std::endl;}int main(int argc, char** argv){testing::InitGoogleTest(&argc, argv);return RUN_ALL_TESTS();}
[==========] Running 1 test from 1 test suite.[----------] Global test environment set-up.[----------] 1 test from TestName[ RUN ] TestName.Subtest_1After Assertion[ OK ] TestName.Subtest_1 (0 ms)[----------] 1 test from TestName (0 ms total)[----------] Global test environment tear-down[==========] 1 test from 1 test suite ran. (1 ms total)[ PASSED ] 1 test.
Demo_3
#include <gtest/gtest.h>#include <iostream>TEST(TestName, Subtest_1){EXPECT_EQ(1, 1);EXPECT_EQ(1, 2);}int main(int argc, char** argv){testing::InitGoogleTest(&argc, argv);return RUN_ALL_TESTS();}
[==========] Running 1 test from 1 test suite.[----------] Global test environment set-up.[----------] 1 test from TestName[ RUN ] TestName.Subtest_1D:\LearnProject\googletest\01_Demo_2\01_Demo_2.cpp(7): error: Expected equality of these values:12[ FAILED ] TestName.Subtest_1 (0 ms)[----------] 1 test from TestName (0 ms total)[----------] Global test environment tear-down[==========] 1 test from 1 test suite ran. (2 ms total)[ PASSED ] 0 tests.[ FAILED ] 1 test, listed below:[ FAILED ] TestName.Subtest_1
Arrange, Act, Assert
#include <gtest/gtest.h>#include <iostream>TEST(TestName, Subtest_1){// Arrangeint value = 100;int increment = 5;// Actvalue = value + increment;// AssertASSERT_EQ(value, 105);}int main(int argc, char** argv){testing::InitGoogleTest(&argc, argv);return RUN_ALL_TESTS();}
[==========] Running 1 test from 1 test suite.[----------] Global test environment set-up.[----------] 1 test from TestName[ RUN ] TestName.Subtest_1[ OK ] TestName.Subtest_1 (0 ms)[----------] 1 test from TestName (0 ms total)[----------] Global test environment tear-down[==========] 1 test from 1 test suite ran. (1 ms total)[ PASSED ] 1 test.
#include <gtest/gtest.h>#include <iostream>TEST(TestName, Subtest_1){// Arrangeint value = 100;int increment = 5;// Actvalue = value + increment;// AssertASSERT_EQ(value, 107);}int main(int argc, char** argv){testing::InitGoogleTest(&argc, argv);return RUN_ALL_TESTS();}
[==========] Running 1 test from 1 test suite.[----------] Global test environment set-up.[----------] 1 test from TestName[ RUN ] TestName.Subtest_1D:\LearnProject\googletest\01_Demo_2\01_Demo_2.cpp(14): error: Expected equality of these values:valueWhich is: 105107[ FAILED ] TestName.Subtest_1 (0 ms)[----------] 1 test from TestName (0 ms total)[----------] Global test environment tear-down[==========] 1 test from 1 test suite ran. (1 ms total)[ PASSED ] 0 tests.[ FAILED ] 1 test, listed below:[ FAILED ] TestName.Subtest_11 FAILED TEST
Demo_4:
TEST(TestName, Increment_by_5) { // Arrange int value = 100; int increment = 5;
// Actvalue = value + increment;// AssertASSERT_EQ(value, 105);
}
TEST(TestName, Increment_by_10) { // Arrange int value = 100; int increment = 10;
// Actvalue = value + increment;// AssertASSERT_EQ(value, 110);
}
int main(int argc, char** argv) { testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
```cpp[==========] Running 2 tests from 1 test suite.[----------] Global test environment set-up.[----------] 2 tests from TestName[ RUN ] TestName.Increment_by_5[ OK ] TestName.Increment_by_5 (0 ms)[ RUN ] TestName.Increment_by_10[ OK ] TestName.Increment_by_10 (0 ms)[----------] 2 tests from TestName (0 ms total)[----------] Global test environment tear-down[==========] 2 tests from 1 test suite ran. (1 ms total)[ PASSED ] 2 tests.
class
#include <gtest/gtest.h>#include <iostream>class MyClass {public:MyClass(std::string _id) : id{_id}{}std::string getId() { return id; }private:std::string id;};TEST(TestName, MyClass){// ArrangeMyClass mc{"root"};// Actstd::string value = mc.getId();// AssertASSERT_EQ(value, "root");}int main(int argc, char** argv){testing::InitGoogleTest(&argc, argv);return RUN_ALL_TESTS();}
[==========] Running 1 test from 1 test suite.[----------] Global test environment set-up.[----------] 1 test from TestName[ RUN ] TestName.MyClass[ OK ] TestName.MyClass (0 ms)[----------] 1 test from TestName (0 ms total)[----------] Global test environment tear-down[==========] 1 test from 1 test suite ran. (0 ms total)[ PASSED ] 1 test.
ASSERT_STREQ
#include <gtest/gtest.h>#include <iostream>class MyClass {public:MyClass(std::string _id) : id{_id}{}std::string getId() { return id; }private:std::string id;};TEST(TestName, MyClass){// ArrangeMyClass mc{"root"};// Actstd::string value = mc.getId();// AssertASSERT_EQ(value.c_str(), "root");}int main(int argc, char** argv){testing::InitGoogleTest(&argc, argv);return RUN_ALL_TESTS();}
[==========] Running 1 test from 1 test suite.[----------] Global test environment set-up.[----------] 1 test from TestName[ RUN ] TestName.MyClassD:\LearnProject\googletest\01_Demo_2\01_Demo_2.cpp(21): error: Expected equality of these values:value.c_str()Which is: 00000046FA52EE00"root"Which is: 00007FF6CB8DD68C[ FAILED ] TestName.MyClass (0 ms)[----------] 1 test from TestName (0 ms total)[----------] Global test environment tear-down[==========] 1 test from 1 test suite ran. (1 ms total)[ PASSED ] 0 tests.[ FAILED ] 1 test, listed below:[ FAILED ] TestName.MyClass1 FAILED TEST
#include <gtest/gtest.h>#include <iostream>class MyClass {public:MyClass(std::string _id) : id{_id}{}std::string getId() { return id; }private:std::string id;};TEST(TestName, MyClass){// ArrangeMyClass mc{"root"};// Actstd::string value = mc.getId();// AssertASSERT_STREQ(value.c_str(), "root");}int main(int argc, char** argv){testing::InitGoogleTest(&argc, argv);return RUN_ALL_TESTS();}
[==========] Running 1 test from 1 test suite.[----------] Global test environment set-up.[----------] 1 test from TestName[ RUN ] TestName.MyClass[ OK ] TestName.MyClass (0 ms)[----------] 1 test from TestName (0 ms total)[----------] Global test environment tear-down[==========] 1 test from 1 test suite ran. (0 ms total)[ PASSED ] 1 test.
Demo_5
#include <gtest/gtest.h>#include <iostream>class MyClass {public:MyClass(int _bv) : baseValue{_bv}{}void Increment(int byValue) { baseValue += byValue; }int getValue() { return baseValue; }private:int baseValue;};TEST(ClassTest, Increment_by_5){// ArrangeMyClass mc{100};// Actmc.Increment(5);// AssertASSERT_EQ(mc.getValue(), 105);}int main(int argc, char** argv){testing::InitGoogleTest(&argc, argv);return RUN_ALL_TESTS();}
[==========] Running 1 test from 1 test suite.[----------] Global test environment set-up.[----------] 1 test from ClassTest[ RUN ] ClassTest.Increment_by_5[ OK ] ClassTest.Increment_by_5 (0 ms)[----------] 1 test from ClassTest (0 ms total)[----------] Global test environment tear-down[==========] 1 test from 1 test suite ran. (1 ms total)[ PASSED ] 1 test.
#include <gtest/gtest.h>
#include <iostream>
class MyClass {
public:
MyClass(int _bv) : baseValue{_bv}{}
void Increment(int byValue) { baseValue += byValue; }
int getValue() { return baseValue; }
private:
int baseValue;
};
TEST(ClassTest, Increment_by_5)
{
// Arrange
MyClass mc{100};
// Act
mc.Increment(5);
// Assert
ASSERT_EQ(mc.getValue(), 105);
}
TEST(ClassTest, Increment_by_10)
{
// Arrange
MyClass mc{ 100 };
// Act
mc.Increment(10);
// Assert
ASSERT_EQ(mc.getValue(), 110);
}
int main(int argc, char** argv)
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
[==========] Running 2 tests from 1 test suite.
[----------] Global test environment set-up.
[----------] 2 tests from ClassTest
[ RUN ] ClassTest.Increment_by_5
[ OK ] ClassTest.Increment_by_5 (0 ms)
[ RUN ] ClassTest.Increment_by_10
[ OK ] ClassTest.Increment_by_10 (0 ms)
[----------] 2 tests from ClassTest (0 ms total)
[----------] Global test environment tear-down
[==========] 2 tests from 1 test suite ran. (1 ms total)
[ PASSED ] 2 tests.
Test Fixtures
#include <gtest/gtest.h>
#include <iostream>
class MyClass {
public:
MyClass(int _bv) : baseValue{_bv}{}
void Increment(int byValue) { baseValue += byValue; }
int getValue() { return baseValue; }
private:
int baseValue;
};
struct MyClassTest : public testing::Test
{
MyClass* mc;
void SetUp() { mc = new MyClass(100); }
void TearDown() { delete mc; }
};
TEST_F(MyClassTest, Increment_by_5)
{
// Act
mc->Increment(5);
// Assert
ASSERT_EQ(mc->getValue(), 105);
}
TEST_F(MyClassTest, Increment_by_10)
{
// Act
mc->Increment(10);
// Assert
ASSERT_EQ(mc->getValue(), 110);
}
int main(int argc, char** argv)
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
[==========] Running 2 tests from 1 test suite.
[----------] Global test environment set-up.
[----------] 2 tests from MyClassTest
[ RUN ] MyClassTest.Increment_by_5
[ OK ] MyClassTest.Increment_by_5 (0 ms)
[ RUN ] MyClassTest.Increment_by_10
[ OK ] MyClassTest.Increment_by_10 (0 ms)
[----------] 2 tests from MyClassTest (0 ms total)
[----------] Global test environment tear-down
[==========] 2 tests from 1 test suite ran. (1 ms total)
[ PASSED ] 2 tests.
#include <gtest/gtest.h>
#include <iostream>
using std::cout;
class MyClass {
public:
MyClass(int _bv) : baseValue{_bv}{}
void Increment(int byValue) { baseValue += byValue; }
int getValue() { return baseValue; }
private:
int baseValue;
};
struct MyClassTest : public testing::Test
{
MyClass* mc;
void SetUp() { cout << "Alice\n"; mc = new MyClass(100); }
void TearDown() { cout << "Dead\n"; delete mc; }
};
TEST_F(MyClassTest, Increment_by_5)
{
// Act
mc->Increment(5);
// Assert
ASSERT_EQ(mc->getValue(), 105);
}
TEST_F(MyClassTest, Increment_by_10)
{
// Act
mc->Increment(10);
// Assert
ASSERT_EQ(mc->getValue(), 110);
}
int main(int argc, char** argv)
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
[==========] Running 2 tests from 1 test suite.
[----------] Global test environment set-up.
[----------] 2 tests from MyClassTest
[ RUN ] MyClassTest.Increment_by_5
Alice
Dead
[ OK ] MyClassTest.Increment_by_5 (0 ms)
[ RUN ] MyClassTest.Increment_by_10
Alice
Dead
[ OK ] MyClassTest.Increment_by_10 (0 ms)
[----------] 2 tests from MyClassTest (0 ms total)
[----------] Global test environment tear-down
[==========] 2 tests from 1 test suite ran. (1 ms total)
[ PASSED ] 2 tests.
Demo_6

using namespace testing;
class Foo { public: virtual int count() = 0; };
class MockFoo : public Foo { public: MOCK_METHOD0(count, int()); };
class Bar { public: Bar(Foo* foo) : m_foo(foo) { } int count() { return m_foo->count(); }
private: Foo* m_foo; };
TEST(BarTest, mock_foo_in_bar) { MockFoo mockFoo = new MockFoo(); Bar bar = new Bar(mockFoo);
EXPECT_CALL(*mockFoo, count())
.Times(3)
.WillOnce(Return(3))
.WillOnce(Return(6))
.WillOnce(Return(5));
EXPECT_EQ(bar->count(), 3);
EXPECT_EQ(bar->count(), 6);
EXPECT_EQ(bar->count(), 5);
delete bar;
delete mockFoo;
}
```cpp
Running main() from ***\src\gtest_main.cc
[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from BarTest
[ RUN ] BarTest.mock_foo_in_bar
[ OK ] BarTest.mock_foo_in_bar (0 ms)
[----------] 1 test from BarTest (0 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test suite ran. (1 ms total)
[ PASSED ] 1 test.
Demo_7
#include <gtest/gtest.h>
#include <iostream>
int func_to_be_tested(int a, int b) {
return a - b;
}
class TestSuite : public ::testing::Test {
protected:
void SetUp() override {
// some setup
std::cout << "Alive\n";
}
void TearDown() override {
// some tear down
std::cout << "Dead\n";
}
};
TEST_F(TestSuite, TestCaseName) {
EXPECT_EQ(1, func_to_be_tested(3, 2));
}
Running main() from ***\src\gtest_main.cc
[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from TestSuite
[ RUN ] TestSuite.TestCaseName
Alive
Dead
[ OK ] TestSuite.TestCaseName (0 ms)
[----------] 1 test from TestSuite (0 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test suite ran. (1 ms total)
[ PASSED ] 1 test.



