# Install
# Windows
下載並安裝 Visual Studio 2022 https://visualstudio.microsoft.com/zh-hant/downloads/
安裝下圖標線的套件
# Linux
更新 apt 資料庫
安裝以下套件
| sudo apt install gcc g++ lcov |
| sudo apt install libgtest-dev |
進行以下操作
| cd /usr/src/gtest |
| |
| sudo cmake CMakeLists.txt |
| sudo make |
| sudo make install |
# Testing
# Example
| |
| #include "gtest/gtest.h" |
| |
| int iCompute(int iA, int iB, char cCommand[]) { |
| int i; |
| for (i = 0; i < strlen(cCommand); i++) { |
| if (cCommand[i] == 'A') |
| iA = iA + iB; |
| else if (cCommand[i] == 'B') |
| iB = iA + iB; |
| else |
| return -1; |
| } |
| return iA + iB; |
| } |
| |
| TEST(TestCaseName, TestName) { |
| EXPECT_EQ(iCompute(5, 2, "ABA"), 25); |
| EXPECT_EQ(iCompute(5, 2, "CCC"), -1); |
| } |
| |
| int main(int argc, char **argv) { |
| testing::InitGoogleTest(&argc, argv); |
| return RUN_ALL_TESTS(); |
| } |
# Windows
# Linux
| // --coverage - The option is a synonym for -fprofile-arcs -ftest-coverage (when compiling) and -lgcov (when linking) |
| |
| g++ -c main.cpp -o main.o --coverage |
| g++ main.o -o main -lgcov -lgtest -lpthread |
| ./main > result.txt |
# Coverage Testing
# Linux
| gcov main.gcda |
| mv main.cpp.gcov coverage.txt |
產生 HTML 圖表
| lcov -c -d . -o test.info --rc lcov_branch_coverage=1 |
| lcov -o test.info -e test.info "*main*" --rc lcov_branch_coverage=1 // 過濾非原始碼 |
| genhtml --branch-coverage -o result test.info |
# 參考來源
- https://ithelp.ithome.com.tw/articles/10202905
- https://zhuanlan.zhihu.com/p/410077415
- https://zhuanlan.zhihu.com/p/431938210
- https://gcc.gnu.org/onlinedocs/gcc/Instrumentation-Options.html#Instrumentation-Options