搜尋

首頁  >  問答  >  主體

C++单元测试入门

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

PHP中文网PHP中文网2825 天前679

全部回覆(2)我來回復

  • 迷茫

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

    一定有人會給你推薦一些經典的單元測試框架,如GoogleTest, cppunit 之類。

    但我負責任的告訴你,那些框架太折騰了,你需要花很多時間和精力去學習使用,然後即使是一個非常非常小的項目,也要配置半天。

    推薦給你一個新興的單元測試框架:Catch

    它簡單到什麼程度?你只需要引入一個頭檔:

    1

    2

    <code>#include "catch.hpp"

    </code>

    另外,它因為非常簡單輕巧,所以很容易學習,把這個簡短的教程看一遍,基本上就掌握了。

    為了更直覺的了解這個框架,貼出教學上的一個例子:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    <code>#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 );

    }

    </code>

    這就是測試一個斐波那契函數的整個過程。感覺如何?


    因為你標題註明了是C++,所以我也先入為主的認為你是想找單元測試實踐方面的資料。針對C++語言的單元測試書籍非常少,我就推薦一本吧:

    Modern C++ Programming with Test-Driven Development


    如果你對單元測試用例設計的理論知識感興趣,求資料。那我建議你去了解TDD的相關知識,然後就可以去看一些有針對性的書籍(只推荐一本,講的非常具體):

    • 單元測驗的藝術(第2版)

    甚至還可以先去對軟體測試這個領域進行一些基本的了解,推薦幾本書:

    • 軟體測試基礎教學
    • Google軟體測試之道
    • 軟體測試實戰

    回覆
    0
  • 怪我咯

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

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


    是亂碼的原因嗎

    回覆
    0
  • 取消回覆