測試框架之GTest

2021-06-05 07:52:25 字數 3019 閱讀 1129

gtest用法和cppunit用法差不多,個人比較習慣gtest,使用比cppunit方便些。主要通過巨集test_f定義測試用例,通過expect_系列和assert_系列巨集進行檢測。

1、原始碼編譯:

2、建立乙個測試工程,將gtest/include新增到頭檔案路徑中。include資料夾可拷貝到工程目錄下。將gtest.lib新增到包含庫中。

3、建立主函式檔案,例如main.cpp,主要用於初始化及啟動gtest測試框架:

#include #include "gtest.h"

gtest_api_ int main(int argc, char **argv)

4、將自己測試的檔案及相應的標頭檔案包含到工程中,例如自己建立乙個選擇法排序程式

#include "sort.h"

inline void exchange(int *x,int *y)

void selectionsort(int *parray,int cnt)}}

5、建立測試檔案,比如叫做sorttest.cpp,建立測試類,並宣告需測試的函式如下:

#include "stdio.h"

#include "gtest.h"

#include "sort.h"

using testing::test;

class test_sort : public test

void teardown()

};

乙個test_sort可以新增多個測試用例。其中setup函式是每個測試用例執行前都要執行的函式,可以用於統一的初始化。teardown相反是最後呼叫的函式,可使用者setup中資源的釋放。

本例中不使用。

6、新增自己的測試用例:

可以看到執行成功。

8、如果失敗,提示如下:

可以看到錯誤的位置,及錯誤的值、期望值。

最簡單的gtest使用工程就這樣完成了。

常用的判斷巨集主要有:

assert_true(a):判斷a是否true,如果為false則assert,不繼續執行。

assert_eq(a,b):判斷ab是否相等,如果不相等則提示,不繼續執行。

expect_true(a):判斷a是否true,如果為false則提示,繼續執行。

expect_eq(a,b):判斷ab是否相等,如果不相等則提示,繼續執行。

一般也就用這麼4個。其他的比如比較可以轉化為assert_true,但這種情況下,用例失敗時的提示資訊不如assert_lt等多罷了。

為了方便測試排序類演算法,我將排序的用例寫在了乙個函式中,對除錯有所不便,但避免了每個排序函式都寫相同的用例:

原始碼如下:

#include "stdio.h"

#include "gtest.h"

#include "common.h"

#include "sort.h"

using testing::test;

class test_sort : public test

void teardown()

};bool checksorted(int *parray,int cnt)

bool cmparray(int *parray,int *psorted,int cnt)

void printarray(int *parray,int cnt)

void sorttest(sk_sort pfunc,const char *strfuncname)

; static int stest1 = ;

static int test2 = ;

static int stest2 = ;

static int test3 = ;

static int stest3 = ;

static int test4 = ;

static int stest4 = ;

static int test5 = ;

static int stest5 = ;

static int test6 = ;

static int stest6 = ;

static int test7 = ;

static int stest7 = ;

static int test8[bigarray];

static int stest8[bigarray];

static int test9[bigarray];

static int stest9[bigarray];

static bool binit = false;

int i = 0;

if(!binit)

for(i=0;i

selectionsort(stest9,bigarray);

}struct tagtestcase

tests[testcnt] = ,,,

,,,,

,,};

printf("%s -- testcase:",strfuncname);

for(i=0;i

printf("----ok\n");

}test_f(test_sort,selectionsort)

下節開始演算法導論的學習,其中排序演算法的測試用例就用上面。

gtest測試框架

gtest測試框架,搭建參考 2.進入 googletest 1.8.0 googletest 刪除不需要的檔案,完成後 sample目錄下只保留sample1 檔案,完成後make得到gtest.a和gtest main.a和testbin。gtest.a是不帶main函式的庫,需要自己寫用於測試...

谷歌測試框架gtest

簡單使用可以參考中的windwos示例。批量執行case,如下示例 單元測試case,可以是乙個介面的一系列測試case 2017 05 19 cwp demo.h ifndef demo h define demo h include gtest gtest.h class testdemo pu...

gtest測試框架使用詳解 GTest常用斷言

gtest 是一套用於編寫c 測試的框架,支援很多好用的特性,包括自動識別測試 豐富的斷言 生成報告等。gtest 斷言是類似於函式呼叫的巨集。經常使用斷言來測試類或函式的功能。當斷言失敗時,gtest則列印出斷言所在的檔案 行號,以及失敗資訊。判斷實際結果與預期結果是否相符的機制稱為斷言。gtes...