歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> Linux下Google Test (GTest)測試環境搭建步驟

Linux下Google Test (GTest)測試環境搭建步驟

日期:2017/3/3 14:07:23   编辑:Linux技術
本文將介紹單元測試工具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中提到的那剩下的三個文件夾內容,進行適當的改寫,就可以實現更加強大的功能。這些等到以後有機會再寫啦。
Copyright © Linux教程網 All Rights Reserved