Home  >  Q&A  >  body text

C++单元测试入门

自己着手在写个完整的全新项目,之前也听说单元测试可以提高程序的健壮性。可是自己找不到合适的资料,对于如何编写单元测试,是一点都不懂。求推荐一些资料,或是单元测试框架~~

PHP中文网PHP中文网2715 days ago608

reply all(2)I'll reply

  • 迷茫

    迷茫2017-04-17 11:40:28

    肯定有人会给你推荐一些经典的单元测试框架,如GoogleTest, cppunit 之类。

    但我负责任的告诉你,那些框架太折腾了,你需要花很多时间和精力去学习使用,然后即使是一个非常非常小的项目,也要配置半天。

    推荐给你一个新兴的单元测试框架:Catch

    它简单到什么程度?你只需要引入一个头文件:

    #include "catch.hpp"
    

    另外,它因为非常简单轻巧,所以很容易学习,把这个简短的教程看一遍,基本就掌握了。

    为了更直观的了解这个框架,贴出教程上的一个例子:

    #define CATCH_CONFIG_MAIN  // This tells Catch to provide a main() - only do this in one cpp file
    #include "catch.hpp"
    
    unsigned int Factorial( unsigned int number ) {
        return number <= 1 ? number : Factorial(number-1)*number;
    }
    
    TEST_CASE( "Factorials are computed", "[factorial]" ) {
        REQUIRE( Factorial(1) == 1 );
        REQUIRE( Factorial(2) == 2 );
        REQUIRE( Factorial(3) == 6 );
        REQUIRE( Factorial(10) == 3628800 );
    }
    

    这就是测试一个斐波那契函数的全过程。感觉如何?


    因为你标题注明了是C++,所以我也先入为主的认为你是想找单元测试实践方面的资料。针对C++语言的单元测试书籍非常少,我就推荐一本吧:

    Modern C++ Programming with Test-Driven Development


    如果你是对单元测试用例设计的理论知识感兴趣,求资料。那么我建议你去了解一下TDD的相关知识,然后就可以去看一些有针对性的书籍(只推荐一本,讲的非常具体):

    • 单元测试的艺术(第2版)

    甚至还可以先去对软件测试这个领域进行一些基本的了解,推荐几本书:

    • 软件测试基础教程
    • Google软件测试之道
    • 软件测试实战

    reply
    0
  • 怪我咯

    怪我咯2017-04-17 11:40:28

    请问我使用Catch,把catch.h头文件放置在工程文件夹下,运行上面这个例子后返回的是:


    是乱码的原因吗

    reply
    0
  • Cancelreply