name: unity-ceedling-test description: 使用Unity框架和CMock进行嵌入式单元测试 category: 测试 allowed-tools:
- Bash
- Read
- Write
- Edit
- Glob
- Grep
Unity/Ceedling 测试技能
概述
此技能提供嵌入式单元测试能力,使用Unity测试框架、CMock模拟生成器和Ceedling构建系统,用于全面的离板和板上测试。
能力
Unity 测试框架
- 测试用例生成
- 断言宏使用
- 测试夹具设置/清理
- 测试组组织
- 参数化测试
- 自定义断言
CMock 模拟生成
- 从头文件自动生成模拟
- HAL/驱动模拟策略
- 回调模拟
- 参数捕获和验证
- 返回值配置
- 调用次数验证
Ceedling 构建系统
- 项目配置 (project.yml)
- 测试运行器生成
- 覆盖率集成
- 编译器配置
- 插件管理
- CI/CD集成
硬件抽象模拟
- 寄存器模拟策略
- DMA模拟模式
- 中断模拟处理
- 时序模拟方法
- 状态机模拟
测试覆盖率
- gcov集成
- lcov报告生成
- 分支覆盖率分析
- MC/DC覆盖率(用于安全)
- 覆盖率阈值强制执行
离板测试
- 主机编译设置
- 平台抽象
- 桩函数实现
- DMA双缓冲
- 伪定时器实现
目标流程
embedded-unit-testing.js- 单元测试实现device-driver-development.js- 驱动测试bsp-development.js- BSP单元测试
依赖
- Unity测试框架
- CMock模拟生成器
- Ceedling构建系统(可选)
- gcov/lcov用于覆盖率
使用场景
此技能在任务需要时被调用:
- 单元测试开发
- 驱动模拟生成
- 测试覆盖率分析
- 离板测试设置
- 嵌入式TDD
项目结构
项目/
src/
驱动.c
驱动.h
test/
test_驱动.c
support/
test_helper.c
build/
test/
artifacts/
project.yml
配置示例 (project.yml)
:项目:
:构建根目录: build/
:测试文件前缀: test_
:使用异常: FALSE
:路径:
:测试:
- test/**
:源码:
- src/**
:包含:
- inc/**
:cmock:
:模拟前缀: mock_
:无原型时: :警告
:强制严格顺序: TRUE
:插件:
- :忽略
- :回调
- :通过指针返回
:插件:
:启用:
- gcov
- xml_tests_report
测试示例
#include "unity.h"
#include "driver.h"
#include "mock_hal_spi.h"
void setUp(void) {
驱动_初始化();
}
void tearDown(void) {
驱动_去初始化();
}
void test_驱动发送正确命令(void) {
uint8_t 预期[] = {0x01, 0x02, 0x03};
HAL_SPI_发送_期望带数组和返回(
SPI1, 预期, 3, 3, 100, HAL_OK);
TEST_ASSERT_EQUAL(驱动_OK, 驱动_发送命令(0x01));
}