C++ 框架測試和調試資源匯總
單元測試
Google Test: 廣泛使用的開放源碼單測框架,提供斷言宏、測試夾具和報告功能。
#include <gtest/gtest.h> TEST(CalculatorTest, Add) { Calculator calc; EXPECT_EQ(calc.Add(1, 2), 3); }
登錄后復制Boost.Test: 另一個廣泛使用的開源單元測試框架,提供眾多的斷言、測試夾具和擴展功能。
集成測試
Catch2: 現代化單測和集成測試框架,注重簡潔性和易用性。
#include <catch2/catch.hpp> SCENARIO("Calculator integration test") { Calculator calc; GIVEN("Initialized calculator") { WHEN("Adding 1 and 2") { int result = calc.Add(1, 2); THEN("Result should be 3") { REQUIRE(result == 3); } } } }
登錄后復制Google Mock: 強大的模擬框架,允許模擬函數和類以進行單元和集成測試。
調試工具
gdb: 強大的基于命令行的調試器,提供逐步執行、設置斷點和檢查內存和寄存器值的功能。
(gdb) break main.cpp:10 (gdb) run (gdb) print i
登錄后復制Visual Studio Debugger: Microsoft 提供的圖形化調試器,提供逐步執行、斷點設置和可視化內存視圖。
實戰案例
考慮一個計算器類,需要對其進行測試:
Calculator.h
class Calculator { public: int Add(int a, int b) { return a + b; } };
登錄后復制
Calculator_test.cpp
#include "Calculator.h" #include <gtest/gtest.h> TEST(CalculatorTest, Add) { Calculator calc; EXPECT_EQ(calc.Add(1, 2), 3); }
登錄后復制
編譯并運行測試:
g++ -I/path/to/gtest/include -o Calculator_test Calculator.cpp Calculator_test.cpp ./Calculator_test
登錄后復制
執行測試后,將生成一個測試報告,顯示通過或失敗的測試。