1. 環(huán)境準(zhǔn)備
- 該腳本適用于軟件的編譯環(huán)境與測(cè)試環(huán)境不同的情況
- 編譯環(huán)境下,安裝lcov和gcov
- 測(cè)試環(huán)境下,準(zhǔn)備好測(cè)試需要的資源
2. 編譯
- 需要測(cè)試的代碼,makefile中添加flag,-ftest-coverage舌界、-fprofile-arcs
- CFLAGS_append = "-ftest-coverage -fprofile-arcs"
- LDFLAGS += "-O0 -ftest-coverage -fprofile-arcs"
- 編譯生成軟件
- 查看是否有 .gcno 和 .o 文件生成,并確認(rèn)路徑
3. 測(cè)試
- 連接設(shè)備泰演,push coverage-test.sh 到設(shè)備測(cè)試目錄下(adb push coverage-test.sh /data/test/)
- 編輯一個(gè)文本文檔用來放置要測(cè)試的命令行呻拌,格式如test.txt(adb push test.txt /data/test/)
- 執(zhí)行 coverage-test.sh (adb shell;cd /data/test/;coverage-test.sh test.txt ./)
- 結(jié)束后會(huì)生成lcov的文件夾,檢查gcda文件是否正常生成
4. 生成報(bào)告
- 回到編譯環(huán)境睦焕,新建一個(gè)目錄用來存放coverage-collect.sh(mkdir /coveragetest)
- 將生成的lcov文件夾拿到本地(adb pull /data/test/lcov/coveragetest/)
- 執(zhí)行coverage-collect.sh, 生成result(cd /coveragetest; coverage-collect.sh <.gcno files path>)
Tips
- 請(qǐng)確保運(yùn)行coverage-collect.sh的環(huán)境下藐握,gcov的版本與編譯環(huán)境下的gcov版本相同靴拱,或者是使用coverage-collect.sh <> -t XXX 指定對(duì)應(yīng)的gcov工具
- 請(qǐng)確保運(yùn)行coverage-collect.sh的環(huán)境下存在軟件對(duì)應(yīng)的源代碼,且路徑與編譯環(huán)境下的代碼路徑相同