zoukankan      html  css  js  c++  java
  • 解读sample2

    说明

    被测试代码文件 sample2.h、sample2.cc
    测试代码文件 sample2_unittest.cc

    官网上如是描述sample2:

    Sample #2 shows a more complex unit test for a class with multiple member functions.

    sample1演示了如何使用gtest来对一个类以及它的成员函数进行单元测试。

    为了让sample2的代码能尽快地跑起来,我把sample2的代码文件直接添加到sample1使用的工程中进行编译。

    理解被测试代码

    被测试代码是一个字符串的封装类:class MyString

    理解测试代码:组织关系

    在sample1中,我们使用TEST宏来组织针对全局函数的单元测试代码。在sample2中,测试的对象由function变成了class,我们依然可以使用TEST宏来组织单元测试代码,详情如下:

    被测试的类 class MyString
    test case name MyString
      - test name 1 DefaultConstructor:测试默认构造函数
      - test name 2 ConstructorFromCString:测试构造函数explicit MyString(const char* a_c_string)
      - test name 3 CopyConstructor:测试拷贝构造函数MyString(const MyString& string)
      - test name 4 Set:测试成员函数void Set(const char* c_string)

    我能够从sample1和sample2中感觉到gtest在易用性方面的努力,有可能这跟我使用过CppUnit有关。易用性的意思是,能够让人把更多的精力集中在测试这件事情上面,而不需要太多地关注框架本身的使用问题。

    理解测试代码:检查字符串比较结果的断言

    对class MyString进行单元测试的时候,sample2_unittest.cc中使用了一组检查字符串比较结果的断言:     

    致命断言(Fatal assertion) 非致命断言(Nonfatal assertion) 预期结果(Verifies)
    ASSERT_STREQ(expected, actual); EXPECT_STREQ(expected_str, actual_str); 两个C字符串有相同的内容
    ASSERT_STRNE(expected, actual); EXPECT_STRNE(str1, str2); 两个C字符串有不同的内容
    ASSERT_STRCASEEQ(expected, actual); EXPECT_STRCASEEQ(expected_str, actual_str); 忽略大小写,两个C字符串有相同的内容
    ASSERT_STRCASENE(expected, actual); EXPECT_STRCASENE(str1, str2); 忽略大小写,两个C字符串有不同的内容


    系列文章索引:http://www.cnblogs.com/duxiuxing/p/4270836.html

  • 相关阅读:
    C ------ 标准函数介绍
    socket编程 ------ 建立 TCP 服务器和客户端流程(阻塞方式)
    TCP ------ keep-alive
    ARM指令集、Thumb指令集、Thumb-2指令集
    poj万人题
    Codeforces Round #273 (Div. 2)
    bnuoj 34990(后缀数组 或 hash+二分)
    hdu4691(后缀数组)
    simpson公式求定积分(模板)
    acdream1415(dij+优先队列+桥)
  • 原文地址:https://www.cnblogs.com/duxiuxing/p/4275271.html
Copyright © 2011-2022 走看看