摘要:
这一节,我们来看Gtest的FAQ(Frequently-Asked Questions)。为什么测试用例和测试实例命名中不应包含下划线在C++中,对于以下情况,相应的标识可能会被编译器或标准库使用:以下划线开始并紧接一个大写字母的标识包含连续两个下划线的标识为避免标识符冲突,用户代码中不应自定义以... 阅读全文
随笔分类 - 测试
Google C++单元测试框架(Gtest)系列教程之五——再论测试固件
2011-10-19 23:56 by bangerlee, 15857 阅读, 收藏, 编辑
摘要:
引言在《Google C++单元测试框架(Gtest)系列教程之三——测试固件(Test fixture)》中,介绍了如何使用测试固件为测试实例(Tests)进行数据配置和初始化。除了数据初始化方法,Gtest还提供了测试实例间共享数据的方法。同属一个测试用例的测试实例间共享数据为实现测试实例间的独立性,Gtest提供了为每个测试实例新生成一个测试固件对象的方法,通过“独享”测试对象中的数据,保证了一个测试实例的执行不会对其他实例的执行产生影响。但是,对于以下情况:初始化数据涉及内存申请等操作,为每个测试实例构造对象将带来较大系统开销;存在某数据,其在每个实例中均被用到,但每个实例都不会更改该 阅读全文
Google C++单元测试框架(Gtest)系列教程之四——参数化
2011-10-08 23:27 by bangerlee, 11397 阅读, 收藏, 编辑
摘要:
引言在上一篇文章中,我们学习了如何使用Gtest的测试固件(Test fixture)完成测试代码和测试数据的复用,这一节我们来学习如何使用Gtest值参数化的方法,简化函数测试;使用类型参数化的方法,简化对模板类的测试。值参数化假设我们要对以下函数进行测试:// 判断n是否为质数bool IsPrime(int n) 假设我们要编写判定结果为false的测试案例,根据之前学习的断言和TEST()的使用方法,我们编写测试代码如下:// Tests negative input.TEST(IsPrimeTest, Negative) { EXPECT_FALSE(IsPrime(-1)); .. 阅读全文
Google C++单元测试框架(Gtest)系列教程之三——测试固件(Test fixture)
2011-10-05 00:36 by bangerlee, 12410 阅读, 收藏, 编辑
摘要:
引言在《Google C++单元测试框架(Gtest)系列教程之二——断言、函数测试》中,我们了解了断言语句,以及如何运用TEST()进行函数测试,在TEST()的使用中,我们接触了一个测试用例包含多个测试实例的组织方式。多个测试实例可能需要进行相识的数据配置和初始化操作,为此,Gtest提供了测试固件(Test fixture)帮助我们进行数据管理。“落后”的方法在了解测试固件之前,我们先来看以下测试例子:template <typename E> // E is the element type.class Queue { public: Queue(); void Enque 阅读全文
Google C++单元测试框架(Gtest)系列教程之二——断言、函数测试
2011-10-03 14:25 by bangerlee, 13531 阅读, 收藏, 编辑
摘要:
引言在《Google C++单元测试框架(Gtest)系列教程之一——入门》中,介绍了如何编译测试代码、生成可执行文件,下面我们来看Gtest提供了哪些语句和框架来方便我们编写单元测试代码。断言1.断言类型断言即判断一个条件是否为真的语句,它是构成Gtest测试代码最基本的单元。Gtest为我们提供了两种类型的断言:ASSERT_*系列,当检查点失败时,终止测试函数;EXPECT_*系列,当检查点失败时,不终止所在测试函数,继续往下执行。我们使用断言语句的时候,一般选择EXPECT_*系列的,基于以下两个原因:该系列断言失败的时候并不终止所在测试函数,该函数中后续的检查点还能得到执行;测试函数 阅读全文
Google C++单元测试框架(Gtest)系列教程之一——入门
2011-10-02 19:22 by bangerlee, 63881 阅读, 收藏, 编辑
摘要:
引言 本文将先介绍单元测试的相关概念,然后引入Google的开源C++单元测试框架Gtest,最后通过编译、运行Gtest自带的一个测试样例,介绍如何在Unix/Linux下使用Gtest。 单元测试 说到单元测试,大家应该不会陌生。作为软件开发过程中最低级别的测试环节,单元测试一般由编码人员自己完 阅读全文