Unity/Ceedling嵌入式单元测试技能 unity-ceedling-test

这是一个用于嵌入式系统开发的单元测试技能,集成了Unity测试框架、CMock模拟生成器和Ceedling构建系统。它支持C语言嵌入式软件的全面测试,包括驱动模拟、硬件抽象层(HAL)模拟、测试覆盖率分析(如gcov/lcov)、离板测试和持续集成。适用于嵌入式软件工程师、固件开发者和测试工程师进行测试驱动开发(TDD)、硬件在环测试和代码质量保障。关键词:嵌入式单元测试,Unity框架,CMock模拟,Ceedling构建,测试覆盖率,硬件抽象模拟,离板测试,TDD,C语言测试,驱动测试。

嵌入式软件 0 次安装 0 次浏览 更新于 2/25/2026

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));
}