zoukankan      html  css  js  c++  java
  • 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信息
  • 相关阅读:
    HDU 1728 逃离迷宫
    程序猿求职之道(《程序猿面试笔试宝典》)之不想签约,但也不想轻易放弃机会,怎么办?
    职场生涯(—)
    Python学习笔记24:Django搭建简单的博客站点(二)
    "高可用方案工具包" high availability toolkit 1.1
    [Swift]LeetCode421. 数组中两个数的最大异或值 | Maximum XOR of Two Numbers in an Array
    [Swift]LeetCode420. 强密码检验器 | Strong Password Checker
    [Swift]LeetCode419. 甲板上的战舰 | Battleships in a Board
    [Swift]LeetCode417. 太平洋大西洋水流问题 | Pacific Atlantic Water Flow
    [Swift通天遁地]七、数据与安全-(11)如何检测应用程序中的内存泄露
  • 原文地址:https://www.cnblogs.com/coolqiyu/p/5378904.html
Copyright © 2011-2022 走看看