2021-05-12 14:32:11
Linux下Google Test (GTest)測試環境搭建步驟
本文將介紹單元測試工具Google Test(GTest)在Linux作業系統中測試環境的搭建方法。本文屬於Google Test使用的基礎教學。在Linux中使用Google Test之前,需要對如下知識有一些了解:
(1)C/C++程式設計方法
(2)makefile的編寫
(3)Linux命令列操作
(4)GTEST背景知識:它是用來幹什麼的?它用什麼語言編寫的?它的一些基本語法?等等
以上知識不需要做到熟能生巧,只要達到入門級別,使用GTEST不會費任何力氣,畢竟GTEST也不是一個高門檻的工具。言歸正傳,我們來按照步驟逐一講解:
Step 1:下載GTEST
下載連結為:https://code.google.com/p/googletest/downloads/list
目前GTEST的最新版本為gtest-1.7.0.zip,因此我們在本文中將以這個版本作為例子講解。
Step 2:認識資料夾
下載並解壓之後,就可以看到gtest-1.7.0資料夾了,裡面的內容如下圖所示
這麼多檔案乍一看確實有點讓人摸不到頭腦。其實,GTEST提供了對於多個不同平台的支援,例如msvc資料夾是用在微軟Visual Studio中,xcode資料夾是用於Mac Xcode,codegrear資料夾是用於Borland C++ Builder,在Linux環境中,我們用的內容就是make資料夾了。
Step 3:清除不需要的檔案
前一步中我們已經講到,很多檔案是為了支援不同平台的,為了保持程式的簡潔,避免混淆試聽,我們在這一步把所有不需要的檔案全部刪除,只保留我們需要的。其實我們只需要4個資料夾,如下圖所示。其餘的檔案以及資料夾全部刪除(這一步並不是必須,但對於我們有潔癖的程式設計師來講,容不得一堆不用的程式碼放在那~)。
好了,只剩下了四個資料夾,看上去是不是清爽了很多?其實開啟make資料夾,你會發現裡面只有一個Makefile檔案。檢視Makefile檔案內容,得知這是系統給出的編譯samples資料夾中的第一個sample的命令。但是開啟sample資料夾,又看到裡面一大坨原始檔。在本入門教學中,我們先不考慮那些複雜的例子。因此,開啟samples資料夾,開始刪檔案,刪到只剩下如圖所示的三個檔案為止。
我們的程式越來越清爽了^_^。
Step 4:改寫Makefile檔案
此時如果你到make資料夾下,通過命令列執行 $ make && ./sample1_unittest 命令,可以看到測試的執行結果。不過如果開啟Makefile檢視一下,就會發現這個makefile只適用於編譯sample1,如果我再增加一個被測的原始檔呢?又要重新寫makefile,太麻煩了。於是,在這一步,我們改寫一下Makefile。
上一步我們講到,現在只剩下4個資料夾(include,make,samples,src),既然make裡面的唯一一個檔案也要被改寫,那也沒必要留這個資料夾了。於是,在Step 4,你要做的第一件事情就是,把make資料夾,連同裡面的Makefile檔案全部刪除……然後,進入samples資料夾,自己建立一個檔案,名為Makefile,如圖所示
然後,開啟Makefile檔案,寫入以下內容,如圖所示(不要把圖中的行號也寫進去哦~)。這個新的Makefile是由剛才被我們刪除的Makefile改寫而來的,如果你好奇的話可以比較一下它們之間的差別,裡面涉及到一些makefile的語法和函數,如果不熟的話,你可能需要花費幾分鐘查一下資料去了解他們。
注意下圖中改寫的Makefile第32行,我們編譯的是字尾名為cpp的檔案,而原來給的例子卻以cc結尾。因此,你還要做一件事情,就是把sample1.cc的檔名改為sample1.cpp,把sample1_unittest.cc的檔名改為sample1_unittest.cpp,就大功告成了。
現在我們的資料夾有三個(include,src,samples),我們自己被測的程式放在sample資料夾中。這個資料夾的名字看著也比較不爽,你可以把它改為mycode或者testcode,然後GTEST根目錄的資料夾名稱gtest-1.7.0也可以改為mygtest之類,用以滿足我們完美主義者的需求。如圖所示:
現在,進入命令列進行編譯執行操作: $ make && ./run_test,就可以看到結果了,如圖所示:
Step 5:新增自己的測試函數
到上面一步,其實我們的測試環境已經搭建完成。如果你現在有一個函數想要被測試一下,可以繼續閱讀Step 5。
假設我們現在有一個待測函數sqrt.cpp以及它的標頭檔案sqrt.h,他們的內容如下:
(sqrt.cpp)
(sqrt.h)
(sqrt_unittest.cpp)
這個被測檔案的作用是計算任意一個正整數的平方根,演算法複雜度在log(n)級別。將以上三個檔案放在mycode資料夾中,然後 make && ./run_test進行編譯執行,就可以看到結果了:
總結:環境搭建完成之後,每次測試一個檔案xxx.cpp以及它的xxx.h檔案,就把這倆放入mycode資料夾,然後編寫xxx_unittest.cpp測試檔案,也放進去。然後到這個目錄下用命令列 make && ./run_test就可以了,應該比最開使的時候方便了許多吧?要測試時,我們只需要三個檔案放入mycode,然後命令列進入這個目錄 make && ./run_test 即可完成測試。下面的圖就是我現在的mycode資料夾了。xxx_unittest.cpp這個檔名並不是固定,取成別的也無所謂,只是這樣更容易辨認哪一個檔案是在測哪個函數而已。
當然,Google Test是一個非常強大的工具,以上所講解的只是使用了它最最基本的功能,以及一個簡單環境的搭建。其實需要用的檔案就是Step 4中提到的那剩下的三個資料夾內容,進行適當的改寫,就可以實現更加強大的功能。這些等到以後有機會再寫啦。
相關文章