概要
對于C++已經(jīng)有相當數(shù)量的既定框架章母,包括(但不限于)CppUnit, Google Test, Boost.Test, Aeryn, Cute, Fructose and many, many more. 即使是Objective-C也有一些,比如:OCUnit - 現(xiàn)在已經(jīng)集成到XCode中擂错。
那么棵帽,Catch與這些測試框架有什么不同呢括袒?
主要特征
- 極其容易上手官辈,只要下載catch.hpp,包含該頭文件贮折,就可以了裤翩。
- 沒有外部依賴。只要你可以編譯C ++ 98并且有一個可用的C ++標準庫调榄。
- 只管編寫測試用例即可踊赠,測試用例是自我注冊的。
- 將測試用例分成幾個部分每庆,每個部分都是隔離運行的(不再需要測試套件?鸫)
- 支持Given-When-Then樣式的BDD(行為驅動開發(fā))和傳統(tǒng)的單元測試。
- 只有一個核心斷言宏用于比較缤灵。使用標準C / C ++運算符進行比較伦籍,但表達式會被分解,并記錄了lhs和rhs腮出。
其他核心功能
- 測試用例可以使用任何字符串命名帖鸦。
- 測試可以被標記為容易運行的特設測試組。
- 失敗的測試可以(可選)在Windows和Mac上進入調試器胚嘲。
- 輸出到模塊化的報告對象作儿。包括基本的文本和XML報告。自定義報告也可以輕松添加馋劈。
- JUnit xml輸出可與第三方工具(如CI服務器)集成立倍。
- 在頭文件中提供了一個默認的main()函數(shù),但是您也可以完全接管控制權(例如集成到您自己的測試運行器GUI中)侣滩。
- 提供了命令行解析器,即使在您選擇提供自己的main()函數(shù)的情況下变擒,仍然可以使用它君珠。
- Catch可以自我測試。
- 備用斷言宏報告失敗娇斑,但不中止測試用例
- 通過內建的富有表現(xiàn)力的Approx()來比較浮點數(shù)策添。
- 內部和輔助性的宏被隔離材部,不會有命名沖突
- 支持匹配(早期階段)
Objective-C特定功能
- 自動檢測您是否正在使用Objective-C項目
*無需任何配置,即可支持ARC和非ARC工程 - 使用Obj-C類實現(xiàn)測試夾具(如OCUnit)
- 額外內置的匹配器唯竹,也可與Obj-C類型協(xié)同工作(例如字符串匹配器)
還有誰在使用Catch乐导?
使用Catch的開源工程列表
請參閱Catch使用指南,以便在實踐中獲得更多使用Catch的內容