问题标签 [ceedling]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
175 浏览

c - 尝试使用 xc16-gcc 编译/链接时出现 Ceedling 错误

我正在尝试为我的 Microchip 嵌入式系统进程实现测试驱动开发,并尝试通过 Ceedling(Unity、CMock 等)来实现。我一直在尝试遵循本教程:https ://spin.atomicobject.com/2012/10/22/getting-started-with-tdd-for-microchips-pics/但遇到了一些问题。我已经完成了所有步骤,但无法正确链接我的代码(至少我认为链接是问题所在)。以下是我执行“ceedling test:all”时的输出

我正在关注的教程有点过时了,所以我可能遗漏了一些与教程发布时有所不同的东西。任何帮助将不胜感激!

更新:

我的 yaml 文件设置不正确,因为我的项目部分中有 :release_build: FALSE 但 :test build: 部分被注释掉了。如果我注释掉 :release_build: FALSE 那么它会正确编译和链接但是我得到一个不同的错误:

0 投票
0 回答
27 浏览

cmock - 如何为每个测试使用不同的头文件?

我正在尝试使用 ceedling (unity + cmock) 测试我正在研究的嵌入式库。

代码的某些部分有条件地隐藏在一个#ifdef DEFINE_NAME ... #else ... #endif块中,并且我有一个配置头文件(例如lib_config.h),lib 用户可以在其中选择(注释/取消注释#define)要使用的功能。

如何为每个测试使用不同的配置头文件,以便尝试所有不同的 lib 组合?

0 投票
1 回答
309 浏览

unit-testing - 在具有 FreeRTOS 依赖性的项目中进行单元测试

我正在尝试在CMock 的帮助下(了解更多关于 CMock的信息)在 Unity 中实现单元测试(了解更多关于 Unity的信息)。为此,我使用了 Ceedling 工具,它将所有 Unity 组件组合到一个框架中(了解有关 Ceedling的更多信息)。

在我将 FreeRTOS 添加到我的项目/测试之前,一切都按预期工作。添加后,Ceedling 难以为 FreeRTOS 组件(如 queue.c 或 list.c)生成模拟。它给出以下错误:

对我来说,它看起来像编译 queue.c 文件以找出应该模拟的函数列表。没关系,但我不知道在检查 queue.c 或 list.c 文件时强制它添加 FreeRTOS.h 包含。

我修改了我的project.yml文件,因此添加了 FreeRTOS 的路径,并将 FreeRTOS.h 标头添加到包括:

即使添加了includes_h_pre_orig_headerincludes_c_pre_header包含它仍然像FreeRTOS.h一样失败。没有在queue.hlist.h头文件之前添加。

我发现了类似的问题,解决方法是在测试脚本中添加对 SetUp 和 Teardown 方法的 Init 和 Verify 调用,并为与 FreeRTOS 相关的调用添加 Expect。我没有运气就试过了。

我的测试脚本很简单:

源文件也很简单,只是为了检查 Ceedling 是否可以与 FreeRTOS 一起使用而创建的:

我还查看了来自 Amazon 的一些示例,但他们的project.yml甚至没有提及与 FreeRTOS 相关的一些路径或头文件。我在这里错过了什么?

0 投票
1 回答
62 浏览

unit-testing - 我们可以对 Bazel 使用 ceedling 吗?

我正在使用 Bazel 对 ac 嵌入式项目进行单元测试,首先我使用 Ceedling(Unity 和 cmock)测试了代码并且它有效。现在,我正在尝试合并到 Bazel,但我没有找到任何关于使用 ceedling 和 Bazel 的文档。

0 投票
0 回答
14 浏览

ceedling - 如何从 Ceedling 单元测试框架传递编译器特定的“中断”关键字?

在我要测试的模块中,有一个类似的功能:

   

由于这个功能,我的测试无法构建,因为 ceedling 不知道中断关键字。

**

**

0 投票
0 回答
29 浏览

c - 如何将 CMock 和 FFF 一起用于 Ceedling 中正在测试的同一模块?

我使用 Ceedling 有一段时间了,我注意到它不能同时使用 FFF(fake framework) 和 Cmock。

例如,假设有一个模块 LED_Driver。(.c/.h)

如果我想对 LED_Driver 中的某些功能使用 mock,同时对 LED_Driver 中的其他功能使用 FFF,该怎么办?

0 投票
0 回答
29 浏览

c++ - 是否有使用 Ceedling 框架的 g++ 编译器的“project.yml”示例?

我一直在尝试使用 Ceedling 和 g++ 设置项目,但我做不到。根据文档,我试图让框架使用 g++ 添加到“project.yml”文件中:

我改编了 Ceedlings doc 文件中的大多数选项,但至少它似乎几乎没有记录。如果之前有人这样做过,也许可以共享一个与 g++ 编译器一起使用的“project-yml”文件,或者提供对“:tools:”结构的更多见解。

谢谢!

0 投票
2 回答
236 浏览

c - 带有 Ceedling 的编译器标志定义

我有嵌入式系统项目,我正在使用 Ceedling(= Unity 和 Cmock)进行测试。

在一个测试用例中,被测代码就是这么简单:

由于嵌入式系统是 8 位架构,%lu必须在 sprintf 中用于格式化 32 位 unsigned int 以进行打印。但是,桌面环境 (GCC) 用于测试构建和运行测试(并且不能选择使用嵌入式构建进行测试)。这会导致下一个警告:

警告本身在桌面环境中是正确的,但从嵌入式系统的角度来看是误报。

我的问题是如何为测试构建设置 -Wno-format 编译器标志,因为我没有在 project.yml 中定义工具部分,因为使用了默认的 GCC?或者甚至有办法告诉 ceedling 目标系统正在使用 8 位架构?

0 投票
1 回答
47 浏览

ubuntu - Ceedling 可选 YML 文件

我在 Ubuntu 20.04 上使用 Jenkins 来自动化我的构建过程。有两个项目给了我,它们是高度耦合的。我将努力将两者分开,但首先我需要设置一些测试。这两个项目是 PNE 和 BLDC 供参考。

这两个项目共享一些由 ifdefs 过滤的代码。在我的 ceedling 测试中,我创建了两个 yml 文件。bldc_project.ymlpne_project.yml。每个 YML 文件都定义了必要的变量并指向要为每个项目运行的测试。

为了运行我的测试,我做

这适用于 Windows,我已经对此进行了测试,bldc_project.ymlpne_project.yml运行了正确的测试。当我在我的 Jenkins 服务器上执行此操作时,我会收到clobber无法test:all找到命令的错误。

看来 set 没有按预期创建环境变量。我究竟做错了什么?我应该使用不同的命令吗?