• 解读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

  • 相关阅读:
    深入A标签点击触发事件而不跳转的详解
    js、css、html判断浏览器的各种版本
    深入理解this对象
    背景透明文字不透明的最佳方法兼容IE(以背景黑色透明度0.5为例)
    解决ie6支持最大高度最小高度的方法
    js点击更多显示更多内容效果
    artdialog关闭弹出窗口
    (巧用)事件代理
    CSS3盒模型display:-webkit-box;的使用
    文件上传input type="file"样式美化
  • 原文地址:https://www.cnblogs.com/duxiuxing/p/4275271.html
Copyright © 2020-2023  润新知