参见:http://cpputest.github.io/

1. CppUTest是一个C/C++单元测试框架,可以在C/C++项目中使命。

2. 第一个测试

新建一个cpp 文件,包含一个TEST_GROUP 和一个 TEST。下面的例子表明测试结果是失败。

 #include "CppUTest/TestHarness.h"
int main(int ac, char** av)
{
//运行所有的单元测试
return CommandLineTestRunner::RunAllTests(ac, av);
} TEST_GROUP(FirstTestGroup)
{
}; TEST(FirstTestGroup, FirstTest)
{
FAIL("Fail me!");
} TEST(FirstTestGroup, SecondTest)
{//向FirstTestGroup中再增加一个测试
STRCMP_EQUAL("hello", "world");
LONGS_EQUAL(, );
CHECK(false);
}

3. 常用宏

  • TEST(group, name) - 定义一个测试
  • IGNORE_TEST(group, name) - 关闭一个测试
  • TEST_GROUP(group) - 声明一个测试组,测试组将包含多个测试
  • TEST_GROUP_BASE(group, base) - 和TEST_GROUP类似,不同的是它用了其它的基类,而非Utest
  • IMPORT_TEST_GROUP(group) - 导出一个测试组的名字,使得它可以从一个库中被访问到

4. setup and teardown

每个test组可以有一个setup和一个teardown方法。setup是开始测试开始前调用,用于初始化一些资源。teardown在结束时调用。

 TEST_GROUP(FooTestGroup)
{
void setup()
{
// Init stuff
} void teardown()
{
// Uninit stuff
}
};

5. 断言

  • CHECK
  • CHECK(boolean condition) - 判断bool条件
  • CHECK_TEXT(boolean condition, text) - 判断bool条件,并打印text里的消息
  • CHECK_FALSE(condition) - 判断bool条件
  • CHECK_FALSE_TEXT(condition, text) - 判断bool条件,并打印text里的消息
  • CHECK_EQUAL(expected, actual) - 判断两个对象的值是否相同
  • CHECK_THROWS(expected_exception, expression) - 判断 expression 是否抛出异常 expected_exception
  • 字符串相关
  • STRCMP_EQUAL(expected, actual) - 用strcmp()判断两个字符串常量是否相同
  • STRNCMP_EQUAL(expected, actual, length) -  用strncmp()判断两个字符串常量是否相同
  • STRCMP_NOCASE_EQUAL(expected, actual) - 用strcmp()判断两个字符串常量是否相同,且不考虑大小写
  • STRCMP_CONTAINS(expected, actual) - 判断 actual 是否包含 expected.
  • 两个对象比较
  • LONGS_EQUAL(expected, actual) - 比较两个数值
  • UNSIGNED_LONGS_EQUAL(expected, actual) - 比较两个非负数
  • BYTES_EQUAL(expected, actual) - 比较两个8个位长的数
  • POINTERS_EQUAL(expected, actual) - 比较两个指针
  • DOUBLES_EQUAL(expected, actual, tolerance) - 比较两个double数值,容忍度是tolerance范围内
  • FUNCTIONPOINTERS_EQUAL_TEXT(expected, actual, text) - 比较两个函数指针
  • MEMCMP_EQUAL(expected, actual, size) - 比较两块内存
  • BITS_EQUAL(expected, actual, mask) - 比较两个数和mask计算后的结果
  • FAIL(text) - 总是失败,并打印text信息

C++ 单元测试 Cpputest的更多相关文章

  1. CPPUTest 单元测试框架(针对 C 单元测试的使用说明)

    CPPUTest 虽然名称上看起来是 C++ 的单元测试框架, 其实它也是支持测试 C 代码的. 本文主要介绍用CPPUTest来测试 C 代码. (C++没用过, 平时主要用的是C) C++相关的内 ...

  2. C++ Programming with TDD之二:CppUTest单元测试

    在之前一篇C++ Programming with TDD博客中,我带给大家gmock框架的简介(地址戳着里),今天我们继续本系列,带个大家C++中的单元测试框架CppUTest的介绍. CppUTe ...

  3. VC++6.0 配置CppUTest测试环境

    最近看<软件项目成功之道>,书中无数次提及到“单元测试”对于项目成败的重要性,看到同事将CppUTest用于Linux动态库测试,于是在VC++6.0环境下搭建一个基于CppUTest的单 ...

  4. Java单元测试框架 JUnit

    Java单元测试框架 JUnit JUnit是一个Java语言的单元测试框架.它由Kent Beck和Erich Gamma建立,逐渐成为源于KentBeck的sUnit的xUnit家族中为最成功的一 ...

  5. Intellij idea添加单元测试工具

    1.idea 版本是14.0.0 ,默认带有Junit,但是不能自动生成单元测试,需要下载JunitGererator2.0插件 2.Settings -Plugins,下载 JunitGenerat ...

  6. Python的单元测试(二)

    title: Python的单元测试(二) date: 2015-03-04 19:08:20 categories: Python tags: [Python,单元测试] --- 在Python的单 ...

  7. Python的单元测试(一)

    title: Python的单元测试(一) author: 青南 date: 2015-02-27 22:50:47 categories: Python tags: [Python,单元测试] -- ...

  8. javascript单元测试框架mochajs详解

    关于单元测试的想法 对于一些比较重要的项目,每次更新代码之后总是要自己测好久,担心一旦上线出了问题影响的服务太多,此时就希望能有一个比较规范的测试流程.在github上看到牛逼的javascript开 ...

  9. 使用NUnit为游戏项目编写高质量单元测试的思考

    0x00 单元测试Pro & Con 最近尝试在我参与的游戏项目中引入TDD(测试驱动开发)的开发模式,因此单元测试便变得十分必要.这篇博客就来聊一聊这段时间的感悟和想法.由于游戏开发和传统软 ...

随机推荐

  1. The Basics of 3D Printing in 2015 - from someone with 16 WHOLE HOURS' experience

    全文转载自 Scott Hanselman的博文. I bought a 3D printer on Friday, specifically a Printrbot Simple Metal fro ...

  2. Eclipse调试方法及快捷键

    基本操作 断点,breakpoint: F5键与F6键均为单步调试: F5是step into,也就是进入本行代码中执行,跳入 F6是step over,跳过,也就是执行本行代码,跳到下一行 F7是跳 ...

  3. Android 大牛的 blog 值得推荐 (转 整理)

    1 收集了 国外著名开发者 25 人,包括 Github 地址.Blog 地址以及重点贡献介绍 链接 收集了 国内部分开发者 32人,包括 Github 地址.Blog 地址以及重点贡献介绍, 链接 ...

  4. apk 打包方式

    1 项目-->Android tools -->Export Signed  Application Package 2 在项目 manifest.xml文件下 单击“use the Ex ...

  5. Linux内核学习之道

    来自:http://blog.chinaunix.net/uid-26258259-id-3783679.html 内核文档 内核代码中包含有大量的文档,这些文档对于学习理解内核有着不可估量的价值,记 ...

  6. vs2015 MFC工程添加消息响应函数

    真不知道这PPT怎么描述的..最后窝找到了解决方法如上图.. 下次找MSDN解决问题好了..而且我们并不知道他所说的这个IDE到底是哪个厂商哪个版本的IDE这就很困惑 不过呢..它主要是让我们添加消息 ...

  7. Windows下MySQL zip版的简单安装

    1.下载MySQL-5.5.10-win32.zip的版本.2.解压到任意路径,比如"D:\Programm Files\".3.进入MySQL路径,复制my-small.ini为 ...

  8. HDU 3068 回文串-Manacher

    题意链接:http://acm.hdu.edu.cn/showproblem.php?pid=3068 题意:中文题. 思路:Manacher模板题 #include<iostream> ...

  9. 分享Kali Linux 2016.2第46周虚拟机

    分享Kali Linux 2016.2第46周虚拟机该虚拟机使用Kali Linux 2016.2第46周的64位镜像安装.桌面为Gnome模式.该虚拟机配置如下:(1)支持VMWare 9以上的版本 ...

  10. PHP 批量修改图片的名字

    <?php // glob() 返回指定目录下的文件名以及目录 $arr = glob("img/*.jpg"); $time = time(); $i = 100001; ...