gtest單元測試

2021-10-04 13:29:52 字數 3656 閱讀 6961

1、用於加入源,方便更新。

sudo add-apt-repository ppa:ubuntu-toolchain-r/test

2、更新

sudo apt-get update

3、將/usr/bin/gcc和/usr/bin/g++這兩個快捷方式給刪除

sudo update-alternatives --remove-all gcc

sudo update-alternatives --remove-all g++

4、安裝 g++ 和 gcc (以7版本為例)

sudo apt-get install gcc-7

sudo apt-get install g++-7

5、將gcc和g++繫結到新安裝的版本上

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 20

sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 20

6、檢查是否安裝成功

gcc --version

g++ --version

··········以上就能用了························

二、g++ gcc的版本切換

因為筆者安裝了多個版本,在以上繫結後,版本仍顯示4.9,而不是7.為此虛做版本切換:

如果你的ubuntu中安裝了多個版本的g++或者gcc,比如4.8 4.9 5.5等多個版本,想要切換時,開啟新的終端,並輸入

sudo update-alternatives --config g++

按照提示數字選擇想要使用的版本。

即可選擇g++版本,gcc同理,在終端中輸入

sudo update-alternatives --config gcc

選擇相應數字,即選擇想要使用的版本。

三、linux g++開啟c++11/14支援

sudo vim ~/.bashrc

在some more ls aliases注釋塊的地方新增下面這兩行:

alias g++11='g++ -g -wall -std=c++11'

alias g++14='g++ -g -wall -std=c++14'

git clone 

cd googletest

cmake

make

make install

sudo apt-get install libgtest-dev
#includeint add(int a,int b)

test(testcase,test0)

int main(int argc,char **ar**)

//編譯

g++ test1.cpp -o test -lgtest -lpthread

./test

ros@ubuntu:~/gtest$ ./test

[**********] running 1 test from 1 test suite.

[----------] global test environment set-up.

[----------] 1 test from testcase

[ run ] testcase.test0

[ ok ] testcase.test0 (1 ms)

[----------] 1 test from testcase (1 ms total)

[----------] global test environment tear-down

[**********] 1 test from 1 test suite ran. (1 ms total)

[ passed ] 1 test.

gtest中斷言的巨集可以分為兩類:一類是assert巨集,另一類就是expect巨集了。

1、assert_系列:如果當前點檢測失敗則退出當前函式

2、expect_系列:如果當前點檢測失敗則繼續往下執行

如果你對自動輸出的錯誤資訊不滿意的話,也是可以通過operator《能夠在失敗的時候列印日誌,將一些自定義的資訊輸出。

assert_系列:

bool值檢查

1、 assert_true(引數),期待結果是true

2、assert_false(引數),期待結果是false

數值型資料檢查

3、assert_eq(引數1,引數2),傳入的是需要比較的兩個數 equal

4、assert_ne(引數1,引數2),not equal,不等於才返回true

5、assert_lt(引數1,引數2),less than,小於才返回true

6、assert_gt(引數1,引數2),greater than,大於才返回true

7、assert_le(引數1,引數2),less equal,小於等於才返回true

8、assert_ge(引數1,引數2),greater equal,大於等於才返回true

字串檢查

9、assert_streq(expected_str, actual_str),兩個c風格的字串相等才正確返回

10、assert_strne(str1, str2),兩個c風格的字串不相等時才正確返回

11、assert_strcaseeq(expected_str, actual_str)

12、assert_strcasene(str1, str2)

13、expect_系列,也是具有類似的巨集結構的

「事件」 本質是框架給你提供了乙個機會, 讓你能在這樣的幾個機會來執行你自己定製的**, 來給測試用例準備/清理資料。gtest提供了多種事件機制,總結一下gtest的事件一共有三種:

1、testsuite事件

需要寫乙個類,繼承testing::test,然後實現兩個靜態方法:setuptestcase 方法在第乙個testcase之前執行;teardowntestcase方法在最後乙個testcase之後執行。

2、testcase事件

是掛在每個案例執行前後的,需要實現的是setup方法和teardown方法。setup方法在每個testcase之前執行;teardown方法在每個testcase之後執行。

3、全域性事件

要實現全域性事件,必須寫乙個類,繼承testing::environment類,實現裡面的setup和teardown方法。setup方法在所有案例執行前執行;teardown方法在所有案例執行後執行。

例如全域性事件可以按照下列方式來使用:

除了要繼承testing::environment類,還要定義乙個該全域性環境的乙個物件並將該物件新增到全域性環境測試中去。

#include #include "gtest/gtest.h"

#include "multiply.h"

class multiplytest : public ::testing::test

virtual void teardown()

};test_f(multiplytest,twovalues)

c 單元測試框架之gtest

搞了3個禮拜的單元測試了,把最近所學所用的東西記錄一下,順便為公司接下來要做的單元測試培訓做下背書。首先什麼是單元測試。在物件導向程式設計中,通常乙個類會承擔乙個單一的職責,所以我們可以用類來劃分單元。單元測試,就是針對專案中的各個類進行測試。它側重於發現單元內部的邏輯錯誤,屬於白盒測試的範疇。單元...

c 單元測試工具之 gtest

gtest是谷歌為c 開發的單元測試框架,該框架基於xunit架構。gtest提供了較豐富的測試特性,且其命令列方式輸出介面友好美觀,是c 單元測試工具的較佳選擇。先從這裡 configure make 這裡google沒有提供make install行為來安裝,我們需要手動安裝。繼續執行以下命令 ...

使用 gtest 給 DLL 工程編寫單元測試

任何時候給你的 增加單元測試 或介面測試 都不晚,對於 c c 使用比較廣泛的單元測試框架應該非 googletest莫屬了。通常在工程 中,使用 gtest 比較廣泛的方式是以 lib 的形式來做單元測試,這種方式使用也比較簡單直接,本文就不再贅述。但是,對於大部分工程 而言,並不是只有 exe ...