一、GoogleTest简介
- Based on xUint Architecture
- Portable and Reusable, works on Linux, Mac and Windows
- Writing Unit Test code in and for C++
- GitHub - google/googletest: GoogleTest - Google Testing and Mocking Framework
- g++ Test.cpp -lgtest -lgtest_main -pthread
GoogleTest是一个google用于C/C++代码单元测试的框架。下面是googletest的两个重要特性:
- ASSERT_* 系列的断言,当检查点失败时,退出当前函数(注意:并非退出当前案例)。
- EXPECT_* 系列的断言,当检查点失败时,继续往下执行。
二、常用测试函数
三、举例介绍用法
Test.cpp
#include <iostream>
#include <gtest/gtest.h>
using namespace std;
TEST(TestName, Subtest_1) {
ASSERT_FALSE(1 == 2);
}
TEST(TestName, Subtest_2) {
ASSERT_TRUE(1 == 2);
}
Int main(int argc, char **argv) {
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
上面是一个简单的判断真假的两个测试用例,在使用googletest的时候要引用gtest/gtest.h,在main函数中testing::InitGoogleTest是GoogleTest的一个全局方法,RUN_ALL_TESTS()是用来跑所有的测试用例的宏,返回0是全部用例pass,返回1说明用例有fail。
四、Assertion断言的关系图
五、简单几个测试
基于上面的代码修改测试用例,验证结果。
(1)example_1
TEST(TestName, Subtest_1) {
ASSERT_TRUE(1 == 1);
cout<<"after assertions"<<endl;
}
RUN后面会执行打印"after assertions", 如果改成ASSERT_FALSE(1==1),则不会打印"after assertions".
(2) example_2
TEST(TestName, Subtest_1) {
ASSERT_EQ(1, 1);
cout<<"after assertions"<<endl;
}
RUN后面会执行打印"after assertions", 如果改成ASSERT_EQ(1, 2),则不会打印"after assertions".
(3) example_3
TEST(TestName, Subtest_1) {
EXPECT_EQ(1, 1);
cout<<"after assertions"<<endl;
}
RUN后面会执行打印"after assertions", 如果改成ASSERT_EQ(1, 2),在错误信息后面同样会打印"after assertions".