C++单元测试入门
PHP中文网
PHP中文网 2017-04-17 11:38:28
0
2
666

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

PHP中文网
PHP中文网

认证高级PHP讲师

全員に返信(2)
迷茫

肯定有人会给你推荐一些经典的单元测试框架,如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软件测试之道
  • 软件测试实战
いいねを押す +0
刘奇

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


是乱码的原因吗

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート