Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何手动指定Ceedling无法拾取的源文件?_C_Unit Testing_Unity Test Framework - Fatal编程技术网

如何手动指定Ceedling无法拾取的源文件?

如何手动指定Ceedling无法拾取的源文件?,c,unit-testing,unity-test-framework,C,Unit Testing,Unity Test Framework,我正在为一个嵌入式应用程序开发一个特性,并使用Ceedling(构建在Unity测试框架之上)对其进行测试。我遇到的一个问题是,我需要在C源文件中使用Ceedling没有编译/链接单元测试文件的功能 根据Ceedling文件: Ceedling知道要编译哪些文件并链接到每个文件中 通过每个测试中包含的#包含列表来执行测试 文件配置的搜索目录中的任何C源文件 与测试文件中包含的头文件相对应 编译并链接到生成的测试夹具可执行文件中 问题是,我在单元测试中包含一个头文件“RTOS.h”,以访问embO

我正在为一个嵌入式应用程序开发一个特性,并使用Ceedling(构建在Unity测试框架之上)对其进行测试。我遇到的一个问题是,我需要在C源文件中使用Ceedling没有编译/链接单元测试文件的功能

根据Ceedling文件:

Ceedling知道要编译哪些文件并链接到每个文件中 通过每个测试中包含的#包含列表来执行测试 文件配置的搜索目录中的任何C源文件 与测试文件中包含的头文件相对应 编译并链接到生成的测试夹具可执行文件中

问题是,我在单元测试中包含一个头文件“RTOS.h”,以访问embOS RTOS函数,但这些函数在“rtosini.c”和“os7m_tl__dp.a”中定义,根据本文档,Ceedling在单元测试代码中看到
包含“RTOS.h”时,只会查找“RTOS.c”

我正在寻找的是一种手动指定在生成TestRunner可执行文件时应编译和链接这些附加文件的方法。这似乎是Ceedling的一个非常基本的要求,但我从文档中看不到实现这一点的方法

我还访问了Ceedling Github网站

为供参考,我当前的“project.yml”文件(Ceedling使用)如下所示:

:项目:
:use_异常:FALSE
:use\u test\u预处理器:FALSE
:使用辅助依赖项:TRUE
:build\u根目录:build
:release\u build:FALSE
:test\u file\u前缀:test_
:环境:
-:路径:
-'C:\ProgramFiles(x86)\IAR Systems\Embedded Workbench 6.5\arm\bin'
-'C:\Program Files(x86)\IAR Systems\Embedded Workbench 6.5\common\bin'
-#{ENV['PATH']}
:分机:
:可执行文件:.out
:路径:
:测试:
-+:测试/**
--:测试/支持
:来源:
-src/main/c/**
-src/main/include/**
-src/main/resources/**
:支持:
-测试/支持
:定义:
:commmon:&common_定义[]
:测试:
-*共同定义
-试验
:测试预处理:
-*共同定义
-试验
:cmock:
:mock_前缀:mock_
:当没有原型时::警告
:强制执行\u严格\u顺序:TRUE
:插件:
-:忽略
-:回调
:将_视为:
uint8:HEX8
uint16:HEX16
uint32:uint32
int8:int8
布尔:UINT8
:工具:
:test_编译器:
:可执行文件:iccarm
:名称:“IAR测试编译器”
:参数:
--D_DLIB_文件_描述符=1
---调试
---endian=小
---cpu=Cortex-M3
--e
---fpu=无
--Ol
---预处理“${3}”
---dlib_config“C:/Program Files(x86)/IAR Systems/Embedded Workbench 6.5/arm/INC/C/dlib_config_Normal.h”
--I“$”:集合\路径\测试\工具链\包含
--I“$”:集合\路径\测试\支持\源\包含\供应商
--o“${2}”
---诊断抑制=Pa050
- '"${1}"'
:测试链接器:
:可执行文件:ilinkarm
:名称:“IAR测试链接器”
:参数:
---vfe
---重定向\u Printf=\u PrintfFull
---重定向_Scanf=_ScanfFull
---半托管
---config“C:/Program Files(x86)/IAR Systems/Embedded Workbench 6.5/arm/config/generic_cortex.icf”
---映射“${3}”
--o“${2}”
- '"${1}"'
:测试夹具:
:可执行文件:cspybat
:名称:“CSpyBat测试运行程序”
:参数:
-““C:\Program Files(x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armproc.dll”
-““C:\Program Files(x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armsim2.dll”
- '"${1}"'
---插件“C:\ProgramFiles(x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armbat.dll”
---后端-B
---endian=小
---cpu=Cortex-M3
---fpu=无
---半托管
:插件:
:加载路径:
-供应商/ceedling/插件
:已启用:
-标准测试报告
-模块发生器
...

我在测试nOS RTO时遇到了同样的问题,并使用空头文件强制Ceedling编译相应的源文件。幸运的是,Unity中添加了一个新的宏来解决这个问题。只需在测试文件的顶部添加类似的内容:

TEST_FILE("source_file_to_compile.c")

只要创建一个符号链接,它就会work@iharob你能澄清一下你的意思吗?我如何使用符号链接使Ceedling图形包含“rtosini.c”和“os7m_tl_dp.a”,当它看到
#包含“RTOS.h”
?哦,你在windows上。对不起,在那里不行。