簡體   English   中英

如何將googletest集成到stm32 cmake項目中

[英]How to integrate googletest to stm32 cmake project

我制作了我使用 STM32 cubeIDE 創建的項目,可使用 Cmake 進行編譯,但我在 googletest 集成方面遇到了問題。

整個項目的文件結構如下;

在此處輸入圖像描述

項目鏈接

我將項目和測試文件夾創建為兩個不同的 cmake 項目。 我編譯項目沒有任何問題,但我無法在測試和項目之間建立健康的連接。 因為在編譯測試時我得到了一個錯誤。

測試中將Project相關的source和header文件添加到CmakeList.txt時,項目的變量和類型定義報錯。

我在測試文件目錄下使用的cmake命令如下;

$cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_TOOLCHAIN_FILE=<path_to_Project/cmake/gcc-arm-none-eabi.cmake> -S<path_to_Test> -B<path_to_Test/build/Debug> -G Ninja

$cmake --build <path_to_Test/build/Debug> -j 8

錯誤;

錯誤

您對將 googletest 集成到現有的 cmake 項目有什么建議嗎?

除非您計划在目標設備 (MCU) 上運行單元測試,否則您不能也不應該包含任何特定於微控制器的代碼,例如 HAL。

以下是對嵌入式項目進行單元測試的一些方法:

  • 將可測試代碼分離到庫中。 此代碼不應依賴於任何特定於硬件的內容。 然后您可以獨立地對庫進行單元測試。
  • 如果您需要測試依賴外圍設備的代碼,則需要抽象外圍設備並創建模擬以用於單元測試。 這需要大量的實施和維護工作。

並非每一段代碼都應該進行單元測試,做更多的研究以更好地了解不同的測試類型。

更新

所以目標是在目標上運行測試。 在那種情況下,我會建議選擇不同的測試框架,因為 gtest 可能太大而無法安裝在 MCU 上,即使您可以以某種方式編譯它。

我知道有人為此目的使用了 cmocka 流程將是這樣的:

  1. 將您的代碼設置為 output 測試結果,例如通過串行端口。
  2. 為 MCU 編譯測試。
  3. 將測試固件上傳到 MCU。
  4. 運行測試並檢查 output。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM