目錄
為系統安裝GoogleTest
執行以下shell script,會將GoogleTest的原始碼下載下來,並且透過make
將GoogleTest編譯完成:
git clone https://github.com/google/googletest
cd googletest
mkdir build
cd build
cmake -DCMAKE_CXX_FLAGS=-std=c++11 -Dgtest_build_samples=ON ..
sudo make install -j4
編譯時可依照需求用cmake
生成不同的編譯項目,有些平台要加上std=c++11
編譯選項才會成功:
cmake ..
cmake -Dgtest_build_samples=ON ..
cmake -DCMAKE_CXX_FLAGS=-std=c++11 -Dgtest_build_samples=ON ..
最後用make
啟動編譯程序,可以加上-j
參數啟用多執行緒編譯,或是加上install
將GoogleTest安裝到系統裡:
sudo make
sudo make -j4
sudo make install -j4
開始自己的單元測試
假設已經存在一個function在myfunc.c、myfunc.h裡頭:
#include "myfunc.h"
int add2(int a, int b) { return a + b; }
#ifndef _MY_FUNC_H_
#define _MY_FUNC_H_
int add2(int, int);
#endif
這時候我們就可以新增檔案 myfunc.gtest.cc,特別為 myfunc.c 裡面的 function 寫 test cases:
#include "myfunc.h"
#include <gtest/gtest.h>
TEST(myfunc_add2, testcase1) {
EXPECT_EQ(add2(-1, 0), -1);
}
TEST(myfunc_add2, testcase2) {
EXPECT_EQ(add2(10, 15), 25);
}
int main() {
testing::InitGoogleTest();
return RUN_ALL_TESTS();
}
例如上面寫了兩組 Test Cases 來測試 add2 這個函式的功能是否如預期運作。
接著,就可以透過下面的 script 編譯並執行:
g++ myfunc.c myfunc.gtest.cc -o myfunc_unitest_main -lgtest -lpthread
./myfunc_unitest_main
看到執行結果,如果都是 PASS,就代表在現有的 Test Cases 下,功能正常:
測試導向程式開發 Test-Driven Development (TDD)
簡易的概念小筆記:先寫Test Cases,再來撰寫程式。待補…。
Reference
comments powered by Disqus