问题标签 [cmock]

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 投票
1 回答
45 浏览

c - 如何在 cmock 中为“读取”功能配置期望

给定一个被测函数,它执行以下操作:

我怎样才能编写我的单元测试,以便模拟函数:

  1. 加载带有特定数据的 buf
  2. 返回指定的 retval

例如:

0 投票
1 回答
320 浏览

c - CMock 模拟一些功能,但不是来自同一模块的其他功能

我正在做单元测试。将 CMock 与 ceedling 一起使用,有什么方法可以模拟 func1(),但按照最初编写的方式运行 func2()?

0 投票
2 回答
220 浏览

c - 如何对从 ISR 调用的静态回调例程进行单元测试

我正在使用 ceedling 对 C 应用程序进行单元测试,并试图实现 ~100% 的高覆盖率。

我的一个应用程序模块中有一个静态回调函数,它使用函数指针注册到 SDK 函数,并在 SDK 的某个事件中调用。

在 appModule.c 中,

我想对这个函数进行单元测试,因为这个函数是静态的,所以不会在 ceedling test_appModule.c 中看到。我有一个解决这个定义的方法,TEST_STATIC而不是static,

但我不是这项工作的忠实拥护者,对上述问题有什么建议吗?

0 投票
2 回答
254 浏览

c - Ceedling未能模拟标题

我正在尝试模拟我正在测试的源文件中包含的标头。

标头以以下内容开头:

我试图像这样模拟它:

但是,在尝试运行 ceedling 测试时,我不断收到以下错误:

0 投票
0 回答
160 浏览

gcc - ceedling/cmock:模拟可变参数函数,或 va_list 参数

我试图模拟这段代码:

对于这两个函数,都会生成一些错误的代码。例如:

甚至,在va_list参数的情况下,生成的代码也无法编译:

有没有办法解决这些问题?

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 相关的一些路径或头文件。我在这里错过了什么?