如何安裝及使用gtest

去年三月份的時候,我又開了一個新的實現(xiàn)編程語言的坑,到現(xiàn)在為止還在斷斷續(xù)續(xù)地填坑中。最近心血來潮,利用晚上的業(yè)余時間,繼續(xù)在為這個項目添磚加瓦。

遺憾的是,這個項目一直以來都沒有單元測試的。每次開發(fā)了新的功能后,都需要手動地逐個執(zhí)行example/目錄下的代碼文件,并一一確認它們都是可以正常運行的。為了更方便、更自動化地對編譯器(以及虛擬機)做回歸測試,便打算基于Google Test來編寫測試代碼。要使用一個框架,安裝是必不可少的,本文正是對我自己手動安裝Google Test的一個記錄。

安裝Google Test

Google Test(下稱gtest)的項目主頁在這里。點擊【Clone or download】后再點擊【Download ZIP】,可以下載到一個叫做googletest-master.zip的文件。下載后這個文件放在了我的系統(tǒng)的/tmp/目錄下,使用下列命令實施解壓縮

cd /tmp/
unzip googletest-master.zip

解壓后得到了新的目錄googletest,該目錄下的README.md文件中有安裝指南。我選擇了基于cmake的安裝方式,只需要創(chuàng)建一個目錄并在其中正確地運行cmake,就可以得到真正構(gòu)建時所需要的一系列文件了(如Makefile)。如果使用的是基于apt-get的Linux發(fā)行版,可以使用下面的命令安裝cmake

sudo apt-get install cmake

有了cmake之后,運行下列的命令來生成構(gòu)建gtest所需要的輔助文件

cd /tmp/googletest-master/
mkdir mybuild/
cd mybuild/
cmake ../googletest/

運行完畢后,在當前目錄中將生成相應(yīng)的Makefile文件,這時候可以構(gòu)建Google Test了,命令如下

make
sudo make install

在我的系統(tǒng)上,sudo make install會把libgtest.a這個文件放置到/usr/local/lib/這個目錄下。現(xiàn)在,可以使用gtest框架來編寫測試代碼了,一個很簡單的例子如下

#include <gtest/gtest.h>

int foobar(void)
{
    return 1;
}

TEST(foobar, test)
{
    ASSERT_EQ(1, foobar());
}

int main(int argc, char *argv[])
{
    testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}

將上面的代碼保存在文件gtest.cpp中,使用下列命令即可編譯并鏈接

g++ -c gtest.cpp
g++ gtest.o /usr/local/lib/libgtest.a -lpthread

這會在當前目錄下生成一個名為a.out的文件,執(zhí)行這個文件就可以看到Google Test的效果了,在我的系統(tǒng)上輸出內(nèi)容如下

[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from foobar
[ RUN      ] foobar.test
[       OK ] foobar.test (0 ms)
[----------] 1 test from foobar (0 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (0 ms total)
[  PASSED  ] 1 test.

全文完

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,881評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,117評論 25 708
  • 【MySQL】Linux下MySQL 5.5、5.6和5.7的RPM、二進制和源碼安裝 1.1BLOG文檔結(jié)構(gòu)圖 ...
    小麥苗DB寶閱讀 10,586評論 0 31
  • CMake學習 本篇分享一下有關(guān)CMake的一些學習心得以及相關(guān)使用。 本文目錄如下: [1、CMake介紹] [...
    AlphaGL閱讀 12,284評論 11 79
  • mfs分布式文件系統(tǒng) 原創(chuàng)作品,允許轉(zhuǎn)載,轉(zhuǎn)載時請務(wù)必以超鏈接形式標明文章原始出處、作者信息和本聲明。否則將追究法...
    jony456123閱讀 653評論 0 0