C++ 单元测试 Cpputest

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

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

2. 第一个测试

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

 1 #include "CppUTest/TestHarness.h"
 2 int main(int ac, char** av)
 3 {
 4 //运行所有的单元测试
 5    return CommandLineTestRunner::RunAllTests(ac, av);
 6 }
 7 
 8 TEST_GROUP(FirstTestGroup)
 9 {
10 };
11 
12 TEST(FirstTestGroup, FirstTest)
13 {
14    FAIL("Fail me!");
15 }
16 
17 TEST(FirstTestGroup, SecondTest)
18 {//向FirstTestGroup中再增加一个测试
19    STRCMP_EQUAL("hello", "world");
20    LONGS_EQUAL(1, 2);
21    CHECK(false);
22 }
View Code

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在结束时调用。

 1 TEST_GROUP(FooTestGroup)
 2 {
 3    void setup()
 4    {
 5       // Init stuff
 6    }
 7 
 8    void teardown()
 9    {
10       // Uninit stuff
11    }
12 };
View Code

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信息
posted @ 2016-04-11 16:28  huapyuan  阅读(1331)  评论(0编辑  收藏  举报