当前位置:首页 » 《资源分享》 » 正文

[C++][第三方库][gtest]详细讲解

19 人参与  2024年10月08日 16:01  分类 : 《资源分享》  评论

点击全文阅读


目录

1.介绍2.安装3.使用1.头文件包含2.框架初始化接口3.调用测试样例4.TEST宏5.断言宏6.示例


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(参数):期待结果是trueASSERT_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.ccg++ -o $@ $^ -std=c++17 -lgtest.PHONY:cleanclean: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.NEmain.cc:16: FailureExpected 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.EXPECTmain.cc:21: FailureExpected: (Add(20, 20)) < (10), actual: 40 vs 10Output in EXPECT_TEST, but after EXPECT_LTmain.cc:25: FailureExpected 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


点击全文阅读


本文链接:http://zhangshiyu.com/post/169086.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1