Cmocka 單元測試日誌記錄

likkoliu發表於2024-04-15

isbs_doc/release/ipg/. ./ut 跑例(24.4.15)

ut 測試不透過

在 isbs_doc 資料夾 git 分支 release/ipg 中對 ut 進行跑例測試

  • 透過 git clone isbs_doc 資料夾到本地
  • 切換到 release/ipg 分支
  • 在 #164 中找到關於 cmocka 單元測試的 ut 資料夾
  • 在終端 MSYS2-Mingw64 直接切換到該目錄下
  • 觀察到目錄下有完整的 makefile 檔案,故選擇直接編譯
    • make all
    • make run
    • make report
      alt text
      alt text
  • 跑例不透過,可以看到 make run 後有不正常的 log 輸出,並且在 make report 中無法找到 *.gcda 檔案
  • make clean 後重新編譯,仍舊無法透過

ut 測試不透過故障原因

未知

ut 測試不透過解決方法

  • ut 資料夾複製到其他目錄下(僅 ut
  • 直接編譯
    • make all
    • make run
    • make report
  • 編譯透過,正常輸出 *.html 檔案
    alt text
    alt text
    alt text

cmocka/example 跑例(24.4.15)

assert_macro_test 測試不透過

assert_macro_test 跑例,使用 gcc assert_macro_test.c -lcmocka 顯示有 undefined reference 錯誤
alt text

但奇怪的是,用同樣的方法對 calculator_test.c 編譯能夠透過
alt text

assert_macro_test 測試不透過故障原因

這就是最典型的 undefined reference 錯誤,因為在連結時發現找不到某個函式的實現檔案
參考 https://blog.csdn.net/aiwoziji13/article/details/7330333

assert_macro_test 測試不透過解決方法

alt text

cmocka/tests 跑例(24.4.15)

test_returns 測試不透過

test_returns 跑例,使用 gcc test_returns.c -lcmocka 顯示有 #include "config.h" 錯誤,查詢 build 目錄下存在 config.h 檔案,將該檔案複製到測試目錄下。繼續 gcc test_returns.c -lcmocka,顯示有 #include <cmocka_private.h> 錯誤,重複上述方法,複製 cmocka_private.h 檔案,但編譯不透過。
alt text

test_returns 測試不透過故障原因

標頭檔案與庫檔案編譯區別

參考 https://www.cnblogs.com/clwsec/p/

assert_macro_test 測試不透過解決方法

方法1:將庫檔案格式改成標頭檔案格式
alt text

方法2:在 D:/MSYS2/mingw64/include/ 目錄下新增該庫檔案

相關文章