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...