问题标签 [unity-test-framework]

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 回答
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 回答
154 浏览

c - 如何使用 ThrowTheSwitch 的 Unity C 单元测试库?

如何使用 ThrowTheSwitch 的 Unity C 单元测试库?

我正在尝试使用ThrowTheSwitch 的 Unity 库在 C 中创建我的单元测试,但我遇到了一些奇怪的错误,但我是新手,所以这可能是一些基本的东西。

这是我的代码:这是mytest.c

这是mytest.h

这是mytestMain.c

这是我尝试编译时遇到的错误mytestMain.c

我应该怎么做才能工作?我在这里错过了什么?

0 投票
1 回答
24 浏览

c - 在 Makefile 中使用静态模式规则编译多个可执行文件

我正在用 C 编写一个矩阵库以供练习。为了养成良好的习惯,我正在使用Unity 测试框架进行测试,这意味着我编译了多个测试文件并运行它们。因为我不知道最终会得到多少测试文件,所以我一直在尝试编写我的 Makefile,以便在我的 tests/ 目录中找到任何 .c 文件并将其用于生成相应的可执行文件。

这是我的项目文件结构:

这是我正在努力的Makefile:

每个测试文件都需要库(fml)和测试框架(unity)。

运行 make 时的预期行为是 check_fml_at、check_fml_set_at 和 check_fml_mem_management 与 fml.o 和 unity.o 库一起显示为 bin/ 文件中的可执行文件。我已经检查过,TESTS 变量正确评估为 check_fml_at、check_fml_set_at 和 check_fml_mem_management。但由于某种原因,只构建了第一个测试,当我运行 make 时,我只在 bin 目录中看到 check_fml_at 以及 fml.o 和 unity.o。

为什么makefile会这样?我可以做些什么来确保 TESTS 中的每个文件都已构建,以便我可以运行每个测试?

感谢您的任何帮助!——托马斯·杜根