googletest初探(一) 原始碼中的例子

2021-07-29 14:11:24 字數 1616 閱讀 4044

最近打算在專案中使用gtest來做一些移動端介面自動化的測試,在網上查了一些資料,最詳細的是玩轉google開源c++單元測試框架google test系列,但基本上沒有介紹如何在移動端使用gtest的。於是決定把自己學習的過程記錄下來。

開啟googletest/msvc,使用visual studio開啟gtest .sln。我裝的是vs2013,開啟時會提示將工程公升級,確認即可。

開啟以後,在專案空間裡共有4個工程。

在解決方案上編譯,會得到四個編譯產物:

其中gtestd.lib就是gtest框架的編譯產物。我們在自己的專案中使用gtest,就需要引用這個庫以及標頭檔案。這裡我們先介紹google自帶的例子。

先看gtest_main這個工程,工程裡只有乙個gtest_main.cc檔案,內容也很簡單,就是乙個main函式。

gtest_api_ int main(int argc, char **argv)
再看工程的配置檔案,引用了gtest工程生成的靜態鏈結庫。

這個工程的編譯產物也並不是可執行檔案,而是靜態鏈結庫。

簡單的理解,這個工程引用了gtest工程生成的靜態庫,同時提供了main函式,在編寫測試case時,可以直接引用這個庫,google給的例子就是這麼做的。

再看gtest_prod_test這個工程。production的類就是例子裡的測試物件,先不多說。在gtest_prod_test.cc中,編寫了兩組針對production的測試case,也是這個工程執行的物件。

test(privatecodetest, canaccessprivatemembers) 

typedef testing::test privatecodefixturetest;

// tests that private members can be accessed from a test_f declared

// as a friend of the class.

test_f(privatecodefixturetest, canaccessprivatemembers)

你可能會覺得奇怪,這個工程沒有main函式,怎麼能夠執行。答案在上節中已經揭曉。開啟工程配置,可以看到引用了gtest_main工程的編譯產物。gtest_maind.lib提供了gtest框架的庫和main函式,因此這個工程只需要引用測試物件,以及編寫測試case就可以執行。

我們可以參照例子的工程結構,但更普遍的是直接引用gtestd.lib,自己編寫main函式。

Linux裝置驅動初探 準備Linux原始碼樹

剛看 o reilly 寫的 linux 裝置驅動程式 時。作者一再強調在編寫驅動程式時必須 建立核心樹。所謂核心樹,我的理解和網上資料說的一致就是核心原始碼的一種邏輯形式。那怎麼建立呢?為此上網 翻雲覆雨 起來而結果卻是 慘敗而歸 為 此託了一天又4個小時 當然包括吃飯睡覺的時間 連個簡單的 he...

AbstractCollection原始碼分析

abstractcollection抽象類提供了collection的骨架實現,collection分析請看 這裡直接看它的 是如何實現的.public abstract iterator iterator 該方法沒有實現.public abstract int size 該方法沒有實現.publi...

ThreadPoolExecutor原始碼閱讀

執行緒池解決兩個問題 一是復用執行緒,減少建立銷毀執行緒帶來系統開銷 二是限定系統資源使用邊界,避免大量執行緒消耗盡系統記憶體 適用於互不依賴,執行時間短,不需要對執行緒控制操作的執行緒 新增任務時,1.若執行緒數量小於corepoolsize,則新增執行緒執行任務 2.若執行緒數量大於等於core...