You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
zovjsra
1122e61f0d
|
2 years ago | |
---|---|---|
src | 2 years ago | |
unittest | 2 years ago | |
.gitignore | 2 years ago | |
CMakeLists.txt | 2 years ago | |
CMakeLists.txt.in | 2 years ago | |
Readme.md | 2 years ago |
Readme.md
OOP Exercise - Google Test
使用方法
clone 專案並進入專案目錄
git clone https://gitea.cglab.cs.nccu.edu.tw/yhchen/gtest_exercise.git
cd gtest_exercise
建立 build 目錄,所有編譯需要的檔案會被建立在這個目錄裡面
mkdir build
cd build
使用 cmake 建立 makefile,並編譯檔案
cmake ..
make
進入 unittest
目錄,如果有看到 utest
執行檔,代表編譯順利完成
cd unittest
./utest
練習內容
在 src
目錄中含有 sphere
物件的宣告及實作,但是這個程式碼中有一些邏輯錯誤,同學需完成以下步驟:
- 編寫 unittest 使 sphere 程式碼覆蓋率達到 80% 以上
- 修改
sphere.cc
程式碼,使程式的邏輯完全正確
覆蓋率計算
這個專案的 cmake 檔案包含計算覆蓋率的工具,會在編譯 unittest
及 src
目錄時同時產生覆蓋率統計的檔案在 build/資料夾位置/CMakeFiles/專案名稱.dir/檔案名稱.cc.gcno
,在執行過程式之後,可以執行下列指令顯示覆蓋率
gcov <gcno檔位置>
以 sphere.cc
為例,要查看覆蓋率可以執行
cd build/src/CMakeFiles/sphere.dir
gcov sphere.cc.gcno
在 macos 中,預設使用的內建 gcov 會無法開啟生成的檔案,需要使用 homebrew 安裝的 gcov(安裝 gcc 時會自動安裝),通常為 gcov-12
,執行下列指令能夠檢查是否使用內建的 gcov
which gcov
如果輸出為 /usr/bin/gcov
,就代表使用的是內建的 gcov。
附錄
GTest 指令
ASSERT 類 |
EXPECT 類 |
說明 |
---|---|---|
ASSERT_TRUE(condition) |
EXPECT_TRUE(condition) |
檢查是否為真 |
ASSERT_FALSE(condition) |
EXPECT_FALSE(condition) |
檢查是否為假 |
ASSERT_EQ(expected,actual) |
EXPECT_EQ(expected,actual) |
檢查數值是否相等 |
ASSERT_NE(val1,val2) |
EXPECT_NE(val1,val2) |
檢查數值是否不相等 |
ASSERT_LT(val1,val2) |
EXPECT_LT(val1,val2) |
val1 < val2 |
ASSERT_LE(val1,val2) |
EXPECT_LE(val1,val2) |
val1 <= val2 |
ASSERT_GT(val1,val2) |
EXPECT_GT(val1,val2) |
val1 > val2 |
ASSERT_GE(val1,val2) |
EXPECT_GE(val1,val2) |
val1 >= val2 |
ASSERT_STREQ(str1,str2) |
EXPECT_STREQ(str1,str2) |
檢查字串是否相等 |
ASSERT_STRNE(str1,str2) |
EXPECT_STRNE(str1,str2) |
檢查字串是否不相等 |
ASSERT_STRCASEEQ(str1,str2) |
EXPECT_STRCASEEQ(str1,str2) |
檢查字串是否相等(不分大小寫) |
ASSERT_STRCASENE(str1,str2) |
EXPECT_STRCASENE(str1,str2) |
檢查字串是否不相等(不分大小寫) |
Linux 環境下安裝 cmake (以 ubuntu 為例)
若環境有需要,請自行加上 sudo
apt update
apt install g++ cmake
Windows 環境下安裝 cmake
可以安裝 Windows Subsystem of Linux,並按照上述 Linux 的步驟操作
MacOS 環境下安裝 cmake
需先安裝 brew,安裝完成後執行
brew install gcc cmake
若使用的是 M1 mac,需要手動將 g++ 加入 PATH,請自行 google