[英]How to setup a cmocka example with arm-none-eabi-gcc + cmake?
我正在為基於stm32f4xx的系統開發固件。 為此,我基於ARM和cmake建立了基於arm-none-eabi-gcc工具鏈的工具鏈。 該工具鏈可在Ubuntu上使用。 我可以進行x編譯和調試(通過openocd + eclipse IDE)。 現在,我想為我的代碼添加一些功能測試。 我正在檢查,看來cmocka是用於嵌入式軟件測試的好工具。
我現在正在尋找將測試集成到cmake構建中的示例/模板。
讓我們在myfunc.c假設一個簡單的函數
#include "myFunc.h"
int buffer[10];
void myFunc(int i, int val) {
buffer[i] = val;
}
如果我做對了,我可以在一個單獨的c文件中進行測試,例如“ test.c”
#include "myFunc.h"
#include <cmocka.h>
// function success
static void test_myFunc_positive() {
for(int i = 0; i < 10; i++) {
myFunc(i,i);
}
}
static void test_myFunc_outofbounds() {
myFunc(100,44);
}
int main(void) {
const struct CMUnitTest tests[] = {
cmocka_unit_test(test_myFunc_positive),
cmocka_unit_test(test_myFunc_outofbounds),
};
return cmocka_run_group_tests(tests, NULL, NULL);
}
通常我跑
cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE="cmake/STM32Toolchain.cmake"
我的問題包含一些子問題:1.)我安裝了libcmocka-dev。 這是我的主機系統。 我需要為arm-none-eabi-gcc編譯器安裝cmocka嗎? 2.)如何設置cmake來選擇cmocka庫,構建測試並在主機系統上運行它? 認為我的工具鏈文件需要忽略。
您的源代碼看起來還不錯。 這是如何使用cmocka的食譜。 我也建議交叉編譯cmocka的源代碼 。 實際上,我是這樣進行的:
cmocka.c
添加到您的源 cmocka_pbc.h
和cmocka_private.h
添加到您的包含目錄中。 PS:我不知道libcmocka-dev。 我認為這是cmocka的預編譯版本?
PPS:在將cmocka的輸出重定向到串行UART時遇到了一些麻煩。 如果您遇到同樣的問題,請隨時提問。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.