google test 安裝

Google Test (libgtest) 是由谷歌開發的一款基於xunit框架的跨平臺單元測試框架,C#上的NUnit,Java的JUnit寫單元測試非常容易,也不乏可視化工具與IDE集成插件,深受喜歡測試區洞開發的程序員的喜愛。但對於C++來說,寫測試就看着麻煩一些。但如果用習慣了,google test還是不錯的。google test更多的信息這裏就不贅述了。下面根據我的實踐,總結以下安裝和第一次編寫google test所需要做的事情,網上雖然有些教程,但我遇到的問題往往要綜合很多篇文章才能解決。這裏我根據自己的實踐,綜合了幾篇文章裏的方法,結合ubuntu系統,寫了一個更詳細的介紹。

Step1.首先下載安裝google test
對於ubuntu系統,可直接從軟件源裏下載更新libgtest-dev
或者 sudo apt-get install libgtest-dev
這樣會自動把googtest的頭文件安裝到/usr/include/gtest目錄下,而源文件在/usr/src/gtest目錄下

也可以自己從https://googletest.googlecode.com上下載gtest的最新版本,不過google code網站經常被牆,到時候可以考慮從別的地方下載。
比如對於1.6.0版本,wget gtest-1.6.0.zip https://googletest.googlecode.com/files/gtest-1.6.0.zip
然後解壓:
假定下載到根目錄下,直接:
user@linux-name:~unzipgtest1.6.0.zipuser@linuxname:  cd gtest-1.6.0

另外,把下載的gtest源代碼下面的include/gtest目錄拷貝到全局頭文件目錄,如:

user@linux-name:~/gtest-1.6.0cprinclude/gtest/usr/local/include/user@linuxname: /gtest1.6.0 cp -r include/gtest /usr/include/
然後在用到gtest的文件中,用#include

pragma once

int fun(int a, int b);

sample.cpp
[cpp] view plain copy

include”sample.h”

int fun(int a, int b)
{
return (a-b);
}

test.cpp這裏我們用了四種ASSERTION(斷言)方法,給初學者一個印象,具體gtest的各種斷言用法還要參考gtest文檔
[cpp] view plain copy

include “gtest\gtest.h”

include “sample.h”

//TEST (gtest macro),fun:function name to test, “case1” test case name
TEST(fun, case1)
{
EXPECT_LT(-2, fun(1, 2));
EXPECT_EQ(-1, fun(1, 2));
ASSERT_LT(-2, fun(1, 2));
ASSERT_EQ(-1, fun(1, 2));
}

/*
int _tmain(int argc, _TCHAR* argv[])
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
*/

Step3. 編譯要測試的代碼(假設文件名爲sample.cpp)

g++ -c sample.cpp

Step4. 編譯單元測試的代碼(假設文件名爲test.cpp)

g++ -c test.cpp

Step5. 與libgtest.a或其他需要的庫鏈接、生成可執行程序

g++ test.o sample.o libgtest.a -o test -lpthread

-lpthread是必須要有的,否則鏈接時會出錯gtest-all.cc:(.text._ZNK7testing8internal11ThreadLocalIPNS_31TestPartResultReporterInterfaceEE16GetOrCreateValueEv[_ZNK7testing8internal11ThreadLocalIPNS_31TestPartResultReporterInterfaceEE16GetOrCreateValueEv]+0x7a): undefined reference to `pthread_setspecific’

Step6. 運行生成的test文件,可輸出測試結果。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章