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

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

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軟體測試之道
  • 軟體測試實戰
刘奇

請問我使用Catch,把catch.h頭檔放置在工程資料夾下,執行上面這個範例後回傳的是:


是亂碼的原因嗎

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板