上面可以看到,編寫一個測試案例是多么的簡單。 我們使用了TEST這個宏,它有兩個參數,官方的對這兩個參數的解釋為:[TestCaseName,TestName],而我對這兩個參數的定義是: [TestSuiteName,TestCaseName],在下一篇我們再來看為什么這樣定義。
對檢查點的檢查,我們上面使用到了EXPECT_EQ這個宏,這個宏用來比較兩個數字是否相等。Google還包裝了一系列EXPECT_* 和ASSERT_*的宏,而EXPECT系列和ASSERT系列的區別是:
1. EXPECT_* 失敗時,案例繼續往下執行。
2. ASSERT_* 失敗時,直接在當前函數中返回,當前函數中ASSERT_*后面的語句將不會執行。
在下一篇,我們再來具體討論這些斷言宏。為了讓我們的案例運行起來,我們還需要在main函數中添加如下代碼:
int _tmain(int argc, _TCHAR* argv[])
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
“testing::InitGoogleTest(&argc, argv);” :gtest的測試案例允許接收一系列的命令行參數,因此,我們將命令行參數傳遞給gtest,進行一些初始化操作。gtest的命令行參數非常豐富,在 后面我們也會詳細了解到。
“RUN_ALL_TESTS()” :運行所有測試案例
OK,一切緒了,我們直接運行案例試試(一片綠色,非常爽):
五、總結
本篇內容確實是非常的初級,目的是讓從來沒有接觸過gtest的同學了解gtest基本的使用。gtest還有很多更高級的使用方法,我們將會在 后面討論?偨Y本篇的內容的話:
1. 使用VS編譯gtest.lib文件
2. 設置測試工程的屬性(頭文件,lib文件,/MT參數(和編譯gtest時使用一樣的參數行了))
3. 使用TEST宏開始一個測試案例,使用EXPECT_*,ASSER_*系列設置檢查點。
4. 在Main函數中初始化環境,再使用RUN_ALL_TEST()宏運行測試案例。
優點:
1. 我們的測試案例本身是一個exe工程,編譯之后可以直接運行,非常的方便。
2. 編寫測試案例變的非常簡單(使用一些簡單的宏如TEST),讓我們將更多精力花在案例的設計和編寫上。
3. 提供了強大豐富的斷言的宏,用于對各種不同檢查點的檢查。
4. 提高了豐富的命令行參數對案例運行進行一系列的設置。