開始建置
下載:
https://github.com/google/googletest,下載下來後根據適當的平台進行編譯
編譯:
在.\googletest-master\googletest\msvc資料夾下可以看到gtest, gtest-md 兩個.sln
兩個差別在 gtest 編譯屬性為MT (MTd),而 gtest-md為MD (MDd),這裡要選擇
跟待測專案同樣的設定。
選擇Platform、Configuration
選擇 gtest,點擊滑鼠右鍵,點選「建置」
編譯成功後,會產生gtest.lib
連結:
將gtest.h的所在位置加入測試專案的include path
將gtest.lib的所在位置加入include path
將gtest.lib加入相依性
設定與gtest相同的Runtime Library
撰寫測試前概念
當撰寫 Google Test 時,我們透過一些 assertions (ex. ASSERT_EQ(expect, actual))
來確認函式的呼叫結果是不是如我們所預期。函式的返回結果可能是True, False.
如果返回結果與預期結果不符,代表測試Failure. 這時這個測試就會結束。但是
有時一個測試過程可能會包含多個測試步驟,如果使用Assertion,只要一個測試
步驟Failure,則接下來的測試步驟便不會往下跑。 若希望就算這個測試步驟Failure
接下來的測試步驟能夠繼續的話,那就要改用Expect的語法
(ex. EXPECT_EQ(expect, actual)).
撰寫測試
Demo:
首先這個範例分為production code和testing code兩個部分
Production code為:
Testing code為:
二個參數的定義是:[TestSuiteName,TestCaseName]
在 main 函式中運用 testing::InitGoogleTest 來處理命令列中 Google Test 特定的
參數, 執行 RUN_ALL_TESTS()
編譯後,產生Add.exe
執行測試 .exe
產生測試報告
--gtest_output=xml[:DIRECTORY_PATH\FILE_PATH\FILE_NAME.xml]
產出 AddTest.xml
XML 格式
沒有留言:
張貼留言