cmocka的學習(1)

2020-08-07 22:41:25

cmocka

cmocka介紹


cmocka 是一個優雅的C語言單元測試框架,它支援物件的mock。只依賴於標準C庫。
可以支援不同的計算機平臺和不同的編譯器。

cmocka的官網

學習任務

  • 在PC上實現樣例測試
  • 在Cortex-M系列MCU中執行

這兩個任務主要有兩個學習目標

  • 熟悉cmocka中cmake的設定與編寫(閱讀/理解cmake原始碼)
  • 熟悉如何使用cmocka編寫PC端的模擬測試和MCU實際平臺測試(重點)

實踐(1)

接下來在Windows 10 的環境下編譯和初步測試cmocka。這裏需要提前做的準備有:

  • 安裝visual studio 2019,可以選擇社羣版
  • 安裝LLVM(clang)的windows版本,LLVM會依賴於visual studio
  • 安裝cmake
  • 安裝ninja

下載並解壓最新版cmocka的原始碼包

解壓後的目錄如下:
cmocka源码目录
在該目錄下新建一個build目錄,並在build目錄下開啓命令列。
在这里插入图片描述
使用下面 下麪幾條命令分別測試cmakeclangninja是否成功安裝

cmake --version

如果可以正常輸出版本號,表示cmake安裝成功。截圖如下:
在这里插入图片描述

clang --version

在这里插入图片描述

ninja --version

在这里插入图片描述

如果上面上個軟體都正常安裝,接下來可以編譯cmocka庫和它的一些測試程式了。

首先使用

cmake -G"Ninja" ..\

生成ninja的構建檔案,命令執行情況如下(部分截圖):
在这里插入图片描述
接下來使用命令

ninja -j8

來編譯cmocka的庫和測試的可執行檔案,執行結果截圖如下:
在这里插入图片描述
其中比較多的警告,這裏先不管。

然後使用下面 下麪的命令來將cmocka生成的庫檔案安裝到指定的目錄(這裏先不解釋具體安裝到了那個目錄)

ninja install

在这里插入图片描述
然後執行測試程式

ninja test

在这里插入图片描述

這樣在PC上的一些編譯工作就做完了。

這個過程還是比較簡單的。但是過程中我還存在一些疑惑,在接下來的學習中需要解決。疑惑有:

疑惑(接下來需要學習的內容)

  • cmake生成了一個 config.h 檔案,生成這個檔案的cmake檔案是如何編寫的?如果更換到其它編譯器這個檔案會設定成宣告樣子?
  • 如何將編譯器設定爲交叉編譯器?如MDK的armcc、armclang或者GNU的arm-none-eabi-gcc
  • 如何編寫測試程式?測試程式如何加入到測試,然後執行ninja test就自動回執行響應的測試程式碼?
  • ninja install是否可以由於打包發佈程式?如何修改cmake檔案實現?