You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ceedling项目Mock文件未生成,出现头文件找不到错误

Ceedling Mock文件未生成及头文件找不到问题排查

问题概述

为air项目(pmk/core目录下文件)编写单元测试时,Ceedling未自动生成mock_pmk.h,测试文件test_pmk_core_error.c中引入该头文件时提示找不到。

可能原因及修复方案

1. 源文件路径配置排除了头文件目录

你的project.yml中source路径排除了pmk的include目录:

:source:
  - +:/home/gmv/air-dev/air/pmk/core/**
  - -:/home/gmv/air-dev/air/pmk/core/include/**

Ceedling生成Mock需要扫描被依赖的头文件(如pmk.h)来识别要Mock的函数声明。虽然你在:include和:files中包含了该目录,但source路径的排除规则可能导致Ceedling无法关联到头文件对应的Mock生成逻辑。

修复:
如果include目录下只有头文件(无.c源文件),可以保留source的排除规则,但需要在cmock配置中明确指定要Mock的头文件。建议添加cmock配置块到project.yml:

:cmock:
  :includes:
    - /home/gmv/air-dev/air/pmk/core/include/pmk.h
  :mock_prefix: mock_

2. 测试文件未触发Mock生成逻辑

Ceedling通常需要测试文件中先引用原始头文件(pmk.h),才会自动生成对应的mock_pmk.h。如果测试文件只直接引用mock_pmk.h,Ceedling无法识别需要生成该Mock。

修复:
在test_pmk_core_error.c中调整头文件引用顺序:

#include "pmk.h"  // 先引用原始头文件,触发Mock生成
#include "mock_pmk.h"

3. 路径配置优先级或拼写错误

检查:include路径是否正确指向pmk头文件所在目录,确保/home/gmv/air-dev/air/pmk/core/include下确实存在pmk.h。同时,Ceedling的路径解析可能受相对路径/绝对路径影响,建议优先使用相对路径(如果项目结构固定),比如:

:include:
  - stubs
  - pmk/core/include

(前提是Ceedling项目根目录在air目录下)

4. Ceedling缓存或构建文件问题

之前的构建缓存可能导致Mock生成逻辑未触发。尝试清理Ceedling的构建目录后重新运行测试:

ceedling clean
ceedling test:test_pmk_core_error

内容的提问来源于stack exchange,提问作者Joana Inverno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 11:12:22