
质量保证篇
文章平均质量分 92
12_测试开发
梦心之魂
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【gmock】Google Mock 入门
目录1 概述1.1 什么是Mock?1.2 Google Mock概述1.3 参考文档2 Google Mock使用2.1 最简单的例子2.2 典型的流程2.3 自定义方法/成员函数的期望行为2.3.1 Matcher(匹配器)2.3.2 基数(Cardinalities)2.3.3 行为(Actions)2.3.4 序列(Sequences)3 Mock实践3.1 我改过的例子3.2 现实中的例子4 Google Mock Cookbook4.1 Mock protected、private方法4.2 M原创 2023-05-14 23:20:37 · 4534 阅读 · 0 评论 -
【gtest】玩转Google单元测试框架gtest系列
系列链接:1.玩转Google开源C++单元测试框架Google Test系列(gtest)之一 - 初识gtest2.玩转Google开源C++单元测试框架Google Test系列(gtest)之二 - 断言3.玩转Google开源C++单元测试框架Google Test系列(gtest)之三 - 事件机制4.玩转Google开源C++单元测试框架Google Test系列(gtest)之四 - 参数化5.玩转Google开源C++单元测试框架Google Test系列(gtest)之五 - 死亡测试6原创 2023-05-14 22:43:20 · 519 阅读 · 0 评论 -
玩转Google开源C++单元测试框架Google Test系列(gtest)之一 - 初识gtest
这里要提醒一下的是,如果你升级为VS2008的工程,那么你的测试Demo最好也是VS2008工程,不然你会发现很郁闷,你的Demo怎么也编不过,我也曾折腾了好久,当时我升级为了VS2008工程,结果我使用VS2005工程建Demo,死活编不过。使用VS的同学可以直接打开msvc里面的工程文件, 如果你在使用的是VS2005或是VS2008,打开后会提示你升级,升完级后,我们直接编译里面的“gtest”工程,可以直接编过的。1. 我们的测试案例本身就是一个exe工程,编译之后可以直接运行,非常的方便。原创 2023-05-16 00:04:53 · 1163 阅读 · 0 评论 -
玩转Google开源C++单元测试框架Google Test系列(gtest)之二 - 断言
在使用EXPECT_TRUE或ASSERT_TRUE时,有时希望能够输出更加详细的信息,比如检查一个函数的返回值TRUE还是FALSE时,希望能够输出传入的参数是什么,以便失败后好跟踪。msg原创 2023-05-16 00:05:14 · 1023 阅读 · 0 评论 -
玩转Google开源C++单元测试框架Google Test系列(gtest)之三 - 事件机制
当然,这样还不够,我们还需要告诉gtest添加这个全局事件,我们需要在main函数中通过testing::AddGlobalTestEnvironment方法将事件挂进来,也就是说,我们可以写很多个这样的类,然后将他们的事件都挂上去。要实现全局事件,必须写一个类,继承testing::Environment类,实现里面的SetUp和TearDown方法。在编写测试案例时,我们需要使用TEST_F这个宏,第一个参数必须是我们上面类的名字,代表一个TestSuite。1. 全局的,所有案例执行前后。原创 2023-05-16 00:07:56 · 1172 阅读 · 0 评论 -
玩转Google开源C++单元测试框架Google Test系列(gtest)之四 - 参数化
接着,我们需要我们上面的案例,使用REGISTER_TYPED_TEST_CASE_P宏,第一个参数是testcase的名称,后面的参数是test的名称。这里,我们要使用一个新的宏(嗯,挺兴奋的):TEST_P,关于这个"P"的含义,Google给出的答案非常幽默,就是说你可以理解为”gtest为我们提供的参数化测试的功能给我们的测试带来了极大的方便,使得我们可以写更少更优美的代码,完成多种参数类型的测试案例。,其中T就是你需要参数化的参数类型,比如上面的例子,我需要参数化一个int型的参数。原创 2023-05-16 00:07:54 · 986 阅读 · 0 评论 -
玩转Google开源C++单元测试框架Google Test系列(gtest)之五 - 死亡测试
通常在测试过程中,我们需要考虑各种各样的输入,有的输入可能直接导致程序崩溃,这时我们就需要检查程序是否按照预期的方式挂掉,这也就是所谓的“死亡测试”。在Windows系统中,gtest的死亡测试中使用的是gtest自己实现的简单的正则表达式语法。这里, 要说明的是,*_DEATH其实是对*_EXIT进行的一次包装,*_DEATH的predicate判断进程是否以非0退出码退出或被一个信号杀死。`),我们可以非常方便的编写导致崩溃的测试案例,并且在不影响其他案例执行的情况下,对崩溃案例的结果进行检查。原创 2023-05-16 00:08:59 · 803 阅读 · 0 评论 -
玩转Google开源C++单元测试框架Google Test系列(gtest)之六 - 运行参数
2. 有时,我在代码中设置 testing::GTEST_FLAG(catch_exceptions) = 1和我在命令行中使用--gtest_catch_exceptions结果稍有不同,在代码中设置FLAG方式有时候捕捉不了某些异常,但是通过命令行参数的方式一般都不会有问题。注意到了,不需要加--gtest前缀了。在我使用过程中发现一个问题,当我同时设置了--gtest_filter参数时,输出的xml报告中还是会包含所有测试案例的信息,只不过那些不被执行的测试案例的status值为“notrun”。原创 2023-05-16 00:10:52 · 1862 阅读 · 0 评论 -
玩转Google开源C++单元测试框架Google Test系列(gtest)之七 - 深入解析gtest
了解了gtest代码后,猛然发现gtest不就是这样吗,同时gtest也给了我很多惊喜,因此,我对gtest的评价是:功能强大,设计简单,使用方便。本文算是抛砖引玉吧,只能是对gtest的整体结构的一些介绍,想要了解更多细节最好的办法还是看gtest源码,如果你看过gtest源码,你会发现里面的注释非常的详细!3. Test 我们自己编写的,或通过TEST,TEST_F等宏展开后的Test对象,管理着测试案例的前后事件,具体的执行代码TestBody。原创 2023-05-16 00:10:40 · 3021 阅读 · 0 评论 -
玩转Google开源C++单元测试框架Google Test系列(gtest)之八 - 打造自己的单元测试框架
如果你在使用gtest过程中发现gtest不能满足你的需求时(或发现BUG),gtest的开发人员非常急切的想知道他们哪来没做好,或者是gtest其实有这个功能,但是很多用户都不知道。TestCase类包含一个测试案例的基本信息,包括:测试案例名称,测试案例执行结果,同时还提供了测试案例执行的方法。3. 执行测试案例时,调用UnitTest::Run(),遍历测试案例集合testcases_,调用案例的Run()方法。// 测试案例的执行结果。接下来定一个宏NTEST,方便我们写我们的测试案例的类。原创 2023-05-16 00:11:11 · 606 阅读 · 1 评论