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

  • 相关阅读:
    前端3
    前端-1
    第三十七章 MYSQL(二)
    第三十六章 MYSQL语句(一)
    第三十五 MYSQL 语句
    数字转换成中文大小写、金额大小写
    NPOI随笔——图片在单元格等比缩放且居中显示
    NPOI随笔——单元格样式CellStyle问题
    C++、C#、VB各语言日志代码
    .NET认识与理论总结
  • 原文地址:https://www.cnblogs.com/duxiuxing/p/4275271.html
Copyright © 2011-2022 走看看