手把手写gtest

网友投稿 314 2022-10-11

手把手写gtest

背景

C++工程开发一般包括编码、编译、自测、集成测试几个阶段。其中自测很重要,充分的自测可以发现和解决编码和设计过程中的绝大部分问题。Google 的gtest框架是一种高效的测试框架,利用gtest 框架在自己模块的持续开发完好,就可以自己实现测试驱动开发,达到下面两个目的:

快速验证新添功能; 回归验证已有功能(保证新的功能不影响已有的功能)

那么,如何高效地搭建自己的gtest 框架呢?

具体步骤

下面总结了几个最主要的步骤:

安装gtest 开发包

yum search gtest yum install gtest.x·86_64 yum install gtest-devel.x86_64

测试文件中添加头gtest 头文件和gtest main函数

... #include #include #include .... .... using namespace YourClassUpperNameSpace::YourClassNameSpace; .... .... int main(int argc, char* argv[]) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }

添加你的测试类

继承gtest基类 class TestYourClass : public testing::Test { ... } 上面最重要的是实现下面的两个虚函数: 每个test case 启动前的初始化函数: virtual void SetUp() { std::cout<<"SetUp"<Start(); } 每个test case 执行完后的清理函数: virtual void TearDown() { std::cout<<"TearDown"<Close(); }

如果需要mock 一些依赖接口,这里有时候还需要先mock 一下依赖接口所在的类:

Class MocYourDependentInterface : public YourDependentInterFace { ... virtual interface1(); virtual interface2(); ... }

完善你的test case

TEST_F(TestYourClass, Case1) { int64_t serverid; int timeout_ms = 10000; :Status status; │ std::string rpc_server_address = FLAGS_test_machine_ip; .... }

makefile中添加libgtest 链接

如果使用CMakeList里:参考如下格式把gtest 加入到target_link_Libraries里面:

target_link_libraries(dataserver brpc braft gflags gtest protobuf)

如果手动写MakeFile

在链接库里加上 -lgtest

结果展示

[==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from TestYourClass [ RUN ] TestYourClass.Case1

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:手把手教你在 TKE 集群中实现简单的蓝绿发布和灰度发布
下一篇:Java中Stream流中map和forEach的区别详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~