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); }