GoogleTest筆記:安裝與執行

Note of GoogleTest for Installation and Execution

Posted by imprld01 on Tuesday, February 15, 2022

目錄


為系統安裝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

  1. GoogleTest 寫 C++ 單元測試的用法與教學
  2. C Unit Test Framework 介紹 (Googletest)

comments powered by Disqus