我正在开发基于stm32f4xx系统的固件。为此,我建立了一个基于ARM的arm-none-eabi-gcc工具链和cmake的工具链。这个工具链可以在Ubuntu上使用。我可以进行交叉编译和调试(通过openocd + eclipse IDE)。现在我想为我的代码添加一些功能测试。我查看了一下,貌似cmocka是嵌入式软件测试的好工具。
现在我正在寻找一个示例/模板,将测试集成到cmake构建中。
假设在myfunc.c中有一个简单的函数。
如果我理解正确,我可以在一个单独的C文件中进行测试,比如"test.c"。
通常我运行
现在我正在寻找一个示例/模板,将测试集成到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库,构建测试并在主机系统上运行它?我认为我的工具链文件需要被忽略。