gtest

谷歌测试说明文档:https://google.github.io/googletest/advanced.htmlgtest安装:https://blog.csdn.net/Jacksqh/article/details/129805462?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-129805462-blog-108855960.235%5Ev36%5Epc_relevant_default_base3&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-129805462-blog-108855960.235%5Ev36%5Epc_relevant_default_base3&utm_relevant_index=1gtest华为文档:http://3ms.huawei.com/hi/group/1002577/wiki_7445653.html一篇比较细致的博客:https://blog.csdn.net/jkddf9h8xd9j646x798t/article/details/105964161

安装gtest

快速入门

编写main函数:

#include<iostream>
#include<gtest/gtest.h>
int add(int a,int b)
{
    return a + b;
}

//testCase是测试类名,add是测试类的一种实例情况。
//==TEST()宏==的第一个参数是Test Case的名称,第二个参数是隶属于第一个Test Case参数的Test的名称。GoogleTest根据Test Case对测试结果进行分组,所以一些相关的Test应该放在同一个Test Case中
TEST(testCase, add)
{
    EXPECT_EQ(add(1,2),3);
    EXPECT_EQ(add(1,4),5);
}
int main(int argc, char **argv)
{
    testing::InitGoogleTest(&argc,argv);
    return RUN_ALL_TESTS();
}

编译:g++ main.cpp -lgtest -lpthread -L/usr/local/lib64 -o main

检测字符串

testCase

测试装置(Test Fixtures)

假如我们有非常多的测试实例,不想重复初始化

TEST_F()宏,我们想让多个Test使用同一套数据配置时,就需要用到测试装置,创建测试装置的具体方法如下:

派生一个继承 ::testing::Test 的类,并将该类中的一些内容声明为 protected 类型,以便在子类中进行访问;根据实际情况,编写默认的构造函数或SetUp()函数,来为每个 test 准备所需内容;根据实际情况,编写默认的析构函数或TearDown()函数,来释放SetUp()中分配的资源;根据实际情况,定义 test 共享的子程序。不同用例之间,数据实际都是独占的,不会相互影响。

TEST_F()宏的第一个参数(即Test Case的名称)必须是测试装置类的类名。

对于TEST_F()定义的每个Test,Google Test将会在运行时创建一个新的测试装置对象,并立即通过SetUp()对其进行初始化,然后运行这个Test,之后通过TearDown()进行数据清理,最后删除测试装置对象。==同一个Test Case中不同的test具有不同的测试装置对象,并且Google Test每次创建新的测试装置前都会先删除之前的测试装置。==多个Test不会重用相同的测试装置,某个Test对测试装置进行修改对其他Test无影响。————————————————版权声明:本文为CSDN博主「hywmj」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/wangmj_hdu/article/details/118369609

class myTest:public testing::Test{
protected:
     virtual void SetUp() {
		std::cout<<"总是在测试用例开始时被调用"<<std::endl;
	}

    virtual void TearDown() {
        std::cout<<"总是在测试用例结束后被调用"<<std::endl;
    }

    int add(int a,int b)
    {
        return a+b;
    }

    //最先调用
    myTest()
    {
        std::cout<<"构造函数"<<std::endl;
    }

    //最后调用
    ~myTest()
    {
        std::cout<<"析构函数"<<std::endl;
    }

    int x=3;
    int y=5;

};

//这个宏允许我们直接使用myTest的成员变量
TEST_F(myTest,test1)
{
    EXPECT_EQ(add(x,y),8)<<"-------add(3,5)--------"<<std::endl;
}

TEST_F(myTest,test2)
{
    EXPECT_EQ(add(3,6),9);
}

全部评论

相关推荐

01-04 14:58
已编辑
东北大学 Java
面试时间24-8-19...&nbsp;整理一下上次找实习的面经🤗时长80min,节奏非常快,常规八股迅速过,很多问题说出关键词就打断了,继续深入。不过最后面试官会讲解且态度好,体验很好一、基础八股(较开放,问k8s是因为开源中使用了)1.&nbsp;读过什么书,有哪些习惯or工具可以让你开发变得高效2.&nbsp;你对云原生怎么理解(容器化、资源调度、大数据)3.&nbsp;docker和k8s的关系4.&nbsp;k8s核心组件&nbsp;(控制层、节点组件、插件)5.&nbsp;你说到有ETCD,讲讲为什么是ETCD6. ETCD满足CAP定理的那些(raft -->&nbsp;CP)7.&nbsp;讲讲CAP定理,什么叫可用性8.&nbsp;其他常用中间件的CAP:kafka,redis,zookeeper9.&nbsp;nginx使用&nbsp;&nbsp;a.&nbsp;反向代理,负载均衡(策略,7层还是4层)&nbsp;&nbsp;b.&nbsp;服务宕机会返回什么错误码(502)&nbsp;&nbsp;c.&nbsp;默认端口(80/443)10.&nbsp;linux内核怎么转发请求的(❌&nbsp;面试官应该想问iptable)11.&nbsp;网页请求到服务端发生了什么12.&nbsp;DNS多级服务器怎么工作13.&nbsp;TCP如何保障可靠连接&nbsp;&nbsp;a.&nbsp;三次握手四次挥手&nbsp;&nbsp;b.&nbsp;序号、重传、校验和&nbsp;&nbsp;c.&nbsp;窗口、流量控制&nbsp;&nbsp;d.&nbsp;拥塞控制14.&nbsp;TCP分段的细节(❌&nbsp;没复习)&nbsp;&nbsp;a.&nbsp;面向字节流,MTU150015.&nbsp;HTTPS原理&nbsp;&nbsp;a.&nbsp;流程,对称非对称加密&nbsp;&nbsp;c.&nbsp;非对称的公钥私钥的作用:防篡改or身份认证?&nbsp;&nbsp;d.&nbsp;私钥加密的,公钥能解吗16. jdk中熟悉哪块 ->&nbsp;锁17.&nbsp;lock和synchronized的区别和联系18.&nbsp;公平or非公平(lock通过参数设置,默认非公平)19.&nbsp;aqs的原理(cas改状态位)二、中间件(mysql、redis、mq三选二)20.&nbsp;讲讲redis线程模型21.&nbsp;select、poll、epoll22.&nbsp;redis作者为什么这么设计&nbsp;&nbsp;a.&nbsp;为什么不用多线程&nbsp;&nbsp;b.&nbsp;那redis6为何又加了多线程 b. 单线程缺点:大key、热key --->&nbsp;单次处理时间长,阻塞其他请求&nbsp;&nbsp;23.&nbsp;讲讲mysql整体架构&nbsp;&nbsp;a.&nbsp;server层有哪些功能&nbsp;&nbsp;&nbsp;&nbsp;ⅰ.&nbsp;缓存:为什么新版本删掉了&nbsp;&nbsp;&nbsp;&nbsp;ⅱ.&nbsp;优化器:原理,怎么判断最优 ⅲ. a=1 and b=2 and c>3,建索引bc。走那些(优化器换位置,走bc)&nbsp;&nbsp;b.&nbsp;engine层&nbsp;&nbsp;&nbsp;&nbsp;ⅰ.&nbsp;innodb结构,插入一条数据的流程(buffer&nbsp;pool、日志的写时机、树中的维护)&nbsp;&nbsp;&nbsp;&nbsp;ⅱ.&nbsp;b+树复杂度,跳表的复杂度,为什么不用跳表(io少,易维护,支持事务。面试官补充:都是logN,但b+树的底为m,跳表的底为2)&nbsp;&nbsp;&nbsp;&nbsp;ⅲ.&nbsp;为什么索引越小,性能越好(相同页存的更多,降低树高度,io少)三、算法:三个线程轮流按顺序输出ABC 四、反问1.&nbsp;岗位核心工作2.&nbsp;问最快多久入职。。。面完20分钟约二面#阿里##实习##面经java#
查看25道真题和解析
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务