C++ 单元测试 Cpputest
参见: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的更多相关文章
- CPPUTest 单元测试框架(针对 C 单元测试的使用说明)
CPPUTest 虽然名称上看起来是 C++ 的单元测试框架, 其实它也是支持测试 C 代码的. 本文主要介绍用CPPUTest来测试 C 代码. (C++没用过, 平时主要用的是C) C++相关的内 ...
- C++ Programming with TDD之二:CppUTest单元测试
在之前一篇C++ Programming with TDD博客中,我带给大家gmock框架的简介(地址戳着里),今天我们继续本系列,带个大家C++中的单元测试框架CppUTest的介绍. CppUTe ...
- VC++6.0 配置CppUTest测试环境
最近看<软件项目成功之道>,书中无数次提及到“单元测试”对于项目成败的重要性,看到同事将CppUTest用于Linux动态库测试,于是在VC++6.0环境下搭建一个基于CppUTest的单 ...
- Java单元测试框架 JUnit
Java单元测试框架 JUnit JUnit是一个Java语言的单元测试框架.它由Kent Beck和Erich Gamma建立,逐渐成为源于KentBeck的sUnit的xUnit家族中为最成功的一 ...
- Intellij idea添加单元测试工具
1.idea 版本是14.0.0 ,默认带有Junit,但是不能自动生成单元测试,需要下载JunitGererator2.0插件 2.Settings -Plugins,下载 JunitGenerat ...
- Python的单元测试(二)
title: Python的单元测试(二) date: 2015-03-04 19:08:20 categories: Python tags: [Python,单元测试] --- 在Python的单 ...
- Python的单元测试(一)
title: Python的单元测试(一) author: 青南 date: 2015-02-27 22:50:47 categories: Python tags: [Python,单元测试] -- ...
- javascript单元测试框架mochajs详解
关于单元测试的想法 对于一些比较重要的项目,每次更新代码之后总是要自己测好久,担心一旦上线出了问题影响的服务太多,此时就希望能有一个比较规范的测试流程.在github上看到牛逼的javascript开 ...
- 使用NUnit为游戏项目编写高质量单元测试的思考
0x00 单元测试Pro & Con 最近尝试在我参与的游戏项目中引入TDD(测试驱动开发)的开发模式,因此单元测试便变得十分必要.这篇博客就来聊一聊这段时间的感悟和想法.由于游戏开发和传统软 ...
随机推荐
- visio 交叉线 不出现拱形怎么办?
- Javascript 学习之路:鼠标长按事件
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- 【项目经验】--EasyUI DataGrid之右键菜单
前两天验收项目,老总提了一个不是需求的需求,为什么这么说呢?因为我们的管理不到位!话说当天,我们UI系统下发了一个总文件,上面写着"各个系统找一个没有添加UI的模块去添加最新版本UI进行测试 ...
- T-SQL 使用WITH高效分页
一.WITH AS 含义 WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到.有的时候, ...
- HDU 4513 吉哥系列故事——完美队形II (Manacher变形)
题意:假设有n个人按顺序的身高分别是h[1], h[2] ... h[n],从中挑出一些人形成一个新的队形,新的队形若满足以下要求,则就是新的完美队形: 1.连续的 2.形成回文串 3.从左到中间那 ...
- python特殊函数 __cmp__
__cmp__ 对 int.str 等内置数据类型排序时,Python的 sorted() 按照默认的比较函数 cmp 排序,但是,如果对一组 Student 类的实例排序时,就必须提供我们自己的特殊 ...
- DSP using MATLAB 示例Example2.11
上代码: b = [1]; a = [1, -1, 0.9]; n = [-20:120]; h = impz(b,a,n); set(gcf,'Color','white'); %subplot(2 ...
- mybaties 的一些点
resultMap resutType mybaties缓存 待续 mybaties对应关系是bean和数据库字段的对应. 1.mybaties 的返回值是对象的话定义为resultMap=" ...
- maven 各种用途
1.maven 管理项目编译 作为项目编译代码管理工具,可以方便的进行编译集成. 2. maven 扩展单元测试 扩展对接junit可以方便进行单元测试 3.maven profiles各种devel ...
- 解决js(ajax)提交后端的“ _xsrf' argument missing from POST” 的错误
首先先简述一下CSRF: CSRF是Cross Site Request Forgery的缩写(也缩写为XSRF),直译过来就是跨站请求伪造的意思,也就是在用户会话下对某个CGI做一些GET/POST ...