【发布时间】:2023-03-29 04:19:02
【问题描述】:
我们正在模拟我们的代码,但由于模拟的标头包括包含其他几个文件的原始标头,因此我们难以消除模拟文件包含的其他文件的依赖关系。 我们得到的错误如下:
In file included from ../nRF5_SDK_11.0.0_89a8197/components/softdevice/s130/headers/ble_gap.h:48:0,
from ../nRF5_SDK_11.0.0_89a8197/components/softdevice/s130/headers/ble.h:52,
from ../infrastructure/microcontroller_abstraction/ble/include/ble_service.h:4,
from ../infrastructure/system_abstraction/pressure/include/pressure_service.h:15,
from ./mocks/pressure_service_mock.h:5,
from ./mocks/pressure_service_mock.c:7:
../nRF5_SDK_11.0.0_89a8197/components/softdevice/s130/headers/ble_gap.h: In function 'sd_ble_gap_address_set':
../nRF5_SDK_11.0.0_89a8197/components/softdevice/s130/headers/nrf_svc.h:66:5: error: unknown register name 'r0' in 'asm'
__asm( \
^
这是由于以下示例场景: 让我们以一个示例文件压力服务 mock.c 为例 mock.c ---- 包括 ---> mock.h 问题是,由于生成了 mock.h,它包含了 pressure_service.h 并且由于我们包含 pressure_service.h ,它试图包含 ble_service.h 然后向上包含的层次结构 未编译原始 SDK 的 c 文件 但必须包含头文件
我们如何阻止 Cmock 包含 pressure_service.h?
请协助我相信这是一个普遍的问题,这就是为什么人们会使用 CMOCK 的全部目的,但我们似乎找不到解决方案。
【问题讨论】:
标签: unit-testing mocking cmock