#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 );
}
一定有人會給你推薦一些經典的單元測試框架,如GoogleTest, cppunit 之類。
但我負責任的告訴你,那些框架太折騰了,你需要花很多時間和精力去學習使用,然後即使是一個非常非常小的項目,也要配置半天。
推薦給你一個新興的單元測試框架:Catch
它簡單到什麼程度?你只需要引入一個頭檔:
另外,它因為非常簡單輕巧,所以很容易學習,把這個簡短的教程看一遍,基本上就掌握了。
為了更直覺的了解這個框架,貼出教學上的一個例子:
這就是測試一個斐波那契函數的整個過程。感覺如何?
因為你標題註明了是C++,所以我也先入為主的認為你是想找單元測試實踐方面的資料。針對C++語言的單元測試書籍非常少,我就推薦一本吧:
Modern C++ Programming with Test-Driven Development
如果你對單元測試用例設計的理論知識感興趣,求資料。那我建議你去了解TDD的相關知識,然後就可以去看一些有針對性的書籍(只推荐一本,講的非常具體):
甚至還可以先去對軟體測試這個領域進行一些基本的了解,推薦幾本書:
請問我使用Catch,把catch.h頭檔放置在工程資料夾下,執行上面這個範例後回傳的是:
是亂碼的原因嗎