# OOP Exercise - Google Test ## 使用方法 clone 專案 ```sh git clone https://gitea.cglab.cs.nccu.edu.tw/yhchen/gtest_exercise.git ``` 建立 build 資料夾,所有編譯需要的檔案會被建立在這個資料夾裡面 ```sh mkdir build cd build ``` 使用 cmake 建立 makefile,並編譯檔案 ```sh cmake .. make ``` 進到 `unittest` 目錄,如果有看到 `utest` 執行檔,代表編譯順利完成 ## 練習內容 在 `src` 目錄中含有 `sphere` 物件的宣告及實作,但是這個程式碼中有一些錯誤的部分,同學需要自己撰寫 `unittest` 來找出程式碼錯誤的部分並做出修正 ## 覆蓋率計算 這個專案的 cmake 檔案包含計算覆蓋率的工具,會在編譯 `unittest` 及 `src` 目錄時同時產生覆蓋率統計的檔案在 `build/資料夾位置/CMakeFiles/專案名稱.dir/檔案名稱.cc.gcno`,在執行過程式之後,可以執行下列指令顯示覆蓋率 ```sh gcov ``` 在 macos 中,預設使用的內建 gcov 會無法開啟生成的檔案,需要使用 homebrew 安裝的 gcov(安裝 gcc 時會自動安裝),通常為 `gcov-12`,執行下列指令能夠檢查是否使用內建的 gcov ```sh which gcov ``` 如果輸出為 `/usr/bin/gcov`,就代表使用的是內建的 gcov。 ## 附錄 ### Linux 環境下安裝 cmake (以 ubuntu 為例) 若環境有需要,請自行加上 `sudo` ```sh apt update apt install g++ cmake ``` ### Windows 環境下安裝 cmake 可以安裝 Windows Subsystem of Linux,並按照上述 Linux 的步驟操作 ### MacOS 環境下安裝 cmake 需先安裝 brew,安裝完成後執行 ```sh brew install gcc cmake ``` 若使用的是 M1 mac,需要手動將 g++ 加入 PATH,請自行 google