既然說可以把模板元編程當做一門獨立的語言,那么針對這門語言,我們希望能有一個專門的xUnit測試框架。
傳統的C++測試框架,如gtest,cppUnit等,主要針對運行期C++設計。既然模板元編程運行在C++編譯期,那么我們希望針對它的測試框架也運行在C++編譯期。另外雖然C++編譯期能用的基礎設施捉襟見肘,但我們還是希望該框架的用法能和傳統的xUnit測試框架類似,支持基本的測試斷言和用例管理。
TLP庫中實現了這樣一個測試框架,它的設計初衷是為了能夠測試TLP庫自身。它專門針對C++編譯期計算做測試,所有測試用例運行在C++的編譯期,一旦編譯通過,則相當所有的測試用例執行成功。一旦有執行失敗的用例,就會導致編譯錯誤,等待去修復用例。它支持定義testcase,支持將testcase劃分到不同的fixture中,并提供測試統計和測試報告。
下面我們講述一下該框架的一些主要設計技巧,涉及到的技術細節對大家學習模板元編程會有不少幫助。