首頁  >  問答  >  主體

C++单元测试入门

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

PHP中文网PHP中文网2765 天前642

全部回覆(2)我來回復

  • 迷茫

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

    回覆
    0
  • 怪我咯

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

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


    是亂碼的原因嗎

    回覆
    0
  • 取消回覆