[C++][第三方库][gtest]详细讲解
1.介绍
gtest
是一个跨平台的C++单元测试框架,由Google公司发布gtest
是为了在不同平台上为编写C++单元测试而生成的,它提供了丰富的断言、致命和非致命判断、参数化等等测试所需的宏,以及全局测试,单元测试组件
2.安装
- 直接命令安装:
sudo apt install libgtest-dev
3.使用
1.头文件包含
#include <gtest/gtest.h>
2.框架初始化接口
testing::InitGoogleTest(&argc, argv);
3.调用测试样例
RUN_ALL_TESTS();
4.TEST宏
- 此处不需要双引号括住文本内容,且同测试下多个测试样例不能同名
TEST(测试名称, 测试样例名称) { // do somethinh } TEST_F(text_fixture, test_name) { // do something }
TEST
:主要用来创建一个简单测试,它定义了一个测试函数,在这个函数中可以使用任何C++代码并且使用框架提供的断言进行检查TEST_F
:主要用来进行多样测试,适用于多个测试场景如果需要相同的数据配置的情况, 即相同的数据测不同的行为
5.断言宏
gtest
中的宏可以分为两大类:ASSERT_
系列:如果当前点检测失败则退出当前测试用例EXPECT_
系列:如果当前点检测失败则继续往下执行
- 常用断言介绍:
bool
值检查:ASSERT_TRUE(参数)
:期待结果是true
ASSERT_FALSE(参数)
:期待结果是false
- 数值型数据检查:
ASSERT_EQ(参数1,参数2)
:equal
,传入的是需要比较的两个数ASSERT_NE(参数1,参数2)
:not equal
,不等于才返回true
ASSERT_LT(参数1,参数2)
:less than
,小于才返回true
ASSERT_GT(参数1,参数2)
:greater than
,大于才返回true
ASSERT_LE(参数1,参数2)
:less equal
,小于等于才返回true
ASSERT_GE(参数1,参数2)
:greater equal
,大于等于才返回true
6.示例
main.cc
:#include <iostream> #include <gtest/gtest.h> int Add(int x, int y) { return x + y; } TEST(Plus_Test, Equal) { ASSERT_EQ(Add(10, 10), 20); } TEST(ERROR_TEST, NE) { ASSERT_EQ(Add(10, 10), 30); } TEST(EXPECT_TEXT, EXPECT) { EXPECT_LT(Add(20, 20), 10); std::cout << "Output in EXPECT_TEST, but after EXPECT_LT" << std::endl; ASSERT_EQ(Add(10, 10), 30); std::cout << "Output in EXPECT_TEST" << std::endl; } int main(int argc, char* argv[]) { // Init Test Module testing::InitGoogleTest(&argc, argv); // Invokle all tests return RUN_ALL_TESTS(); }
makefile
:main:main.cc g++ -o $@ $^ -std=c++17 -lgtest .PHONY:clean clean: rm main
- 运行示例:
$ ./main [==========] Running 3 tests from 3 test suites. [----------] Global test environment set-up. [----------] 1 test from Plus_Test [ RUN ] Plus_Test.Equal [ OK ] Plus_Test.Equal (0 ms) [----------] 1 test from Plus_Test (0 ms total) [----------] 1 test from ERROR_TEST [ RUN ] ERROR_TEST.NE main.cc:16: Failure Expected equality of these values: Add(10, 10) Which is: 20 30 [ FAILED ] ERROR_TEST.NE (0 ms) [----------] 1 test from ERROR_TEST (0 ms total) [----------] 1 test from EXPECT_TEXT [ RUN ] EXPECT_TEXT.EXPECT main.cc:21: Failure Expected: (Add(20, 20)) < (10), actual: 40 vs 10 Output in EXPECT_TEST, but after EXPECT_LT main.cc:25: Failure Expected equality of these values: Add(10, 10) Which is: 20 30 [ FAILED ] EXPECT_TEXT.EXPECT (0 ms) [----------] 1 test from EXPECT_TEXT (0 ms total) [----------] Global test environment tear-down [==========] 3 tests from 3 test suites ran. (0 ms total) [ PASSED ] 1 test. [ FAILED ] 2 tests, listed below: [ FAILED ] ERROR_TEST.NE [ FAILED ] EXPECT_TEXT.EXPECT 2 FAILED TESTS
原文地址:https://blog.csdn.net/qq_37281656/article/details/142680033
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!