1.0 通用部分 和常见的测试工具一样,gtest提供了单体测试常见的工具和组件.比如判断各种类型的值相等,大于,小于等,管理多个测试的测试组如testsuit下辖testcase,为了方便处理初始化数据减少重复代码,提供了setup和teardown函数. 官方文档称:TEST has two parameters: the test case name and the test name. 第一个是case名称,第二个是test名称,这是google的名次称呼方法,其实就是一般意义上的tes…
1.7 sample7--接口测试 值参数不限定类型,也可以是类的引用,这就可以实现对类接口的测试,一个基类可以有多个继承类,那么可以测试不同的子类功能,但是只需要写一个测试用例,然后使用参数列表实现对每个子类的测试. 使用值参数测试法去测试多个实现了相同接口(类)的共同属性(又叫做接口测试) using ::testing::TestWithParam; using ::testing::Values; ​ typedef PrimeTable* CreatePrimeTableFunc();…
gtest 提供了类型参数化测试方案,可以测试不同类型的数据接口,比如模板测试.可以定义参数类型列表,按照列表定义的类型,每个测试case都执行一遍. 本例中,定义了2种计算素数的类,一个是实时计算,一个是提前计算好存放到一个大数组了.既空间和时间实现方式的对比.两种实现类都继承于抽象类PrimeTable. // The prime table interface. class PrimeTable { public: virtual ~PrimeTable() {} ​ // Returns…
sample 10 使用event listener监控Water类的创建和销毁.在Water类中,有一个静态变量allocated,创建一次值加一,销毁一次值减一.为了实现这个功能,重载了new和delete关键字,然后在new和delete函数中,做allocated的增减和记录allocated变量的值. class Water { public: // Normal Water declarations go here. ​ // operator new and operator de…
测试一个方法,需要较多个参数进行测试,比如最大值.最小值.异常值和正常值.这中间会有较多重复代码工作,而值参数测试就是避免这种重复性工作,并且不会损失测试的便利性和准确性. 如果测试一个函数,需要些各种参数进行边界测试,比如测试是否为素数,需要测试各种参数. 方法1: class Prime { public: bool IsPrime(int n) { if (n <= 1) return false; ​ for (int i = 2; i * i <= n; i++) { // n is…
作用 作为代码编码人员,写完代码,不仅要保证编译通过和运行,还要保证逻辑尽量正确.单元测试是对软件可测试最小单元的检查和校验.单元测试与其他测试不同,单元测试可看作是编码工作的一部分,应该由程序员完成,也就是说,经过了单元测试的代码才是已完成的代码,提交产品代码时也要同时提交测试代码.测试部门可以作一定程度的审核.(来自百度百科) 其作用可以归为四种: 验证:验证程序逻辑的正确性,即使后期升级,通过跑单元测试,也可以看到升级后是否会对旧逻辑有影响 设计:促使程序员写出可单独测试的代码,从而更容易…
简介     gtest是google开源的一个单元测试框架,以其简单易学的特点被广泛使用.该框架以第三方库的方式插入被测代码中.同其他单元测试框架相似,gtest也通过制作测试样例来进行代码测试.同时,gtest还支持通过事件机制为这些测试样例添加不同级别的挂钩函数. gtest安装     在ubuntu中安装gtest的指令如下,该指令包含了下载源码.编译和安装的过程: sudo apt-get install libgtest-dev cd /usr/src/gtest sudo cma…
一.设置一个新的测试项目 在用google test写测试项目之前,需要先编译gtest到library库并将测试与其链接.我们为一些流行的构建系统提供了构建文件: msvc/ for Visual Studio, xcode/ for Mac Xcode, make/ for GNU make, codegear/ for Borland C++ Builder. 如果你的构建系统不在这个名单上,在googletest根目录有autotools的脚本(不推荐使用)和CMakeLists.txt…
简介     事件机制用于在案例运行前后添加一些操作(相当于挂钩函数).目前,gtest提供了三种等级的事件,分别: 全局级,所有案例执行的前后 TestSuite级,某一个案例集的前后 TestCase级,每一个案例的前后     不同等级的事件在影响不同的范围. 示例-全局级     全局级事件在所有案例执行的前后运行,制作该事件需要继承testing::Environment类,实现里面的SetUp和TearDown方法.为了模拟实际应用中的情况,下面的测试代码分为了三个文件,分别代表:全…
转载来源:https://www.cnblogs.com/coderzh/archive/2009/04/12/1434155.html 一.前言 上一篇我们分析了gtest的一些内部实现,总的来说整体的流程并不复杂.本篇我们就尝试编写一个精简版本的C++单元测试框架:nancytest ,通过编写这个简单的测试框架,将有助于我们理解gtest. 二.整体设计 使用最精简的设计,我们就用两个类,够简单吧: 1. TestCase类包含单个测试案例的信息. 2. UnitTest类 负责所有测试案…