问题标签 [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 投票
2 回答
1449 浏览

c - 如何在 Mac (Lion) 上使用“unity”对 C 代码进行单元测试?

首先让我说我不是 C 开发人员,而且我对实际编写真实世界的 C 代码知之甚少。我一直在做一些研究,以找到一个 xUnit 框架,我可以用它来为 C 代码编写测试,并且基于我发现它看起来像Unity是我想一起去的那个。看起来很简单,但是从 Unity 的网站下载 zip 文件后,我真的不知道该怎么做。它似乎没有正常的配置/制作/制作安装,如果有的话,我不确定这是否是我应该使用的。然而,它确实附带了一些 rake 任务,但这些任务似乎都不是任何类型的“安装”任务。作为最后的手段,我尝试将 3 个源文件与我的代码一起复制(我真的希望这不是正确的做法),但是当我尝试使用 gcc 编译我的 c 文件时出现错误,但是我认为这应该有效。这是我的设置:

这是 mycode.c 的源代码

当我跑步时,gcc mycode.c我得到:

(当我尝试使用 gcc 编译 unity.c 时出现类似错误)。我认为这意味着统一附带的代码需要与我所拥有的编译器不同的编译器:

或者可能统一与 64 位处理器不兼容......(我在 Mac OS 10.7.3 上运行,配备 2.4 GHz Intel Core 2 Duo 处理器 - 另一件可能或可能不相关的事情是我已经获得了 XCode 版本 4.3 (4E109) 以及 XCode 的命令行工具)在这一点上,我只是抓住了最后一根稻草,而且我的头顶上。

我的问题是,获取第三方 C 库(例如 Unity)并使其可用于我的 C 代码的正确过程是什么?我是否需要在 Python 或 Ruby 中安装一些东西,或者在我的路径中添加一些东西,比如在 Java 或其他东西中?不应该只是将统一的代码放入我的工作中吗?我做错了什么还是Unity或两者兼而有之?我真的只想能够使用 Unity 测试驱动 C 代码。任何帮助将不胜感激。提前致谢!

0 投票
1 回答
933 浏览

c - 什么意思#define TEST_CASE(...)

这个定义是什么意思

在 Unity C 测试工具中?

然后以这种方式使用(示例):

更多关于 Unity 的信息:http: //throwtheswitch.org/white-papers/unity-intro.html

0 投票
1 回答
227 浏览

c - 在 biicode 中使用仅标头库

简短:如何使用带有 biicode 的仅标头库?

:当我尝试构建一个块时,它包含示例目录,即使我尝试在已发布块的 biicode.conf 中显式设置依赖项。

Long:我正在尝试使用 biicode 启动并运行统一框架。

Unity 作为 C 的单元测试框架非常棒,因为您不需要编译任何库。如果你自己做模拟,你甚至不需要运行任何脚本——.c你的编译中只包含一个文件,你就是黄金。

我已将 git repo 发布到我的 biicode 块paulbendixen/Unity中,并且由于除了应包含的标头随附的 c 文件之外不需要任何编译步骤,因此无需执行任何其他操作。

但是,当我包含文件时,使用#include "paulbendixen/Unity/src/unity.h"执行 bii 时出现错误cpp:build

这是在示例文件夹中,因此不应编译,当我只想使用单元测试部分时。将 [dependencies] 更改为包含unity.h = unity.c unity_internals.h也无济于事。

我很确定问题应该在 中解决Unity/biicode.conf,但我无法在任何地方找到该文件的完整描述。

Unity 库的简单性应该使其成为 bii 等构建系统的理想选择,但设置起来似乎相当复杂。

如果有帮助,我使用了简单的布局和-r [github for throwtheswitch]选项

0 投票
1 回答
1112 浏览

unit-testing - 如何覆盖单元测试中的 Linq 语句?

我有UpdateEmployees()更新所有员工数据的方法。

在为该方法编写单元测试时,它不是覆盖OrderBy()语句。如何获得按语句排序的代码覆盖率。

我使用了 Moq 单元测试。

0 投票
1 回答
111 浏览

c - Quiet output for unity?

I have Grenning's book. On page 20 he has the output from a unity example. It shows no passing tests, just ". . ." for each passing test.

I downloaded the unity source and am running it in a simulator for my target processor. I see every test case listed - passing ones and failing ones.

I don't see any option I can define in unity.h that would only print out the failing test cases and the summary. I have a lot of tests and my stdout window is really cluttered right now.

Is that some magic handled by the generate test runner ruby script that I am not using (in the auto or extras directories)? Or is there a basic option I am missing.

This is representative of what my output looks like now

I'd rather it be like:

0 投票
2 回答
495 浏览

unit-testing - 有没有办法让 IAR CSPY 返回由执行的用户程序定义的错误代码?

我正在使用 IAR EWARM 的 cspybat 使用 Unity 为我的嵌入式代码运行一些单元测试。我希望我的构建服务器有一种简单的方法来确定单元测试是通过还是失败。如果我的单元测试失败,CSPY 有没有办法返回非零错误代码?我尝试更改 main() 中的返回值而没有更改。我可以调用一个函数来强制返回错误吗?

我的 cspybat 批处理文件如下所示:

0 投票
1 回答
2561 浏览

c - C 测试 - Unity 和 CMake 的未定义参考

我目前正在尝试使用 C 语言进行代码覆盖和测试的项目设置。我当前的堆栈是 CLion 用于 IDE,Clang 用于编译器,gcov 和 lcov 用于覆盖,Unity 用于测试框架,CMock 用于模拟/在测试期间存根。

我目前有以下包结构:

我更高级别的 CMakeLists.txt 看起来像:

我的应用级别 CMakeLists.txt 看起来像:

我的测试级别 CMakeLists.txt 看起来像:

目前我的问题是我没有正确地做某事。尝试在 util.c 中测试函数时,我得到一个未定义的引用:

我的 util_test.c 目前是:

我是测试驱动的 c 开发和 CMake 的菜鸟,那么我应该设置测试以使它们依赖于 src 中的 c 文件的正确方法是什么?

如果我只是执行 TEST_ASSERT_EQUAL(1,1) 而不是调用 util.c 函数,我会看到:

所以我觉得我 100% 陷入了某种链接器问题。

0 投票
3 回答
4135 浏览

ruby - 如何以普通用户身份运行捆绑安装

我正在尝试使用bundle install. 我不是 Ruby 用户——这是我第一次真正尝试运行 rake。我只是尝试使用 ThrowtheSwitch.org 中的一些使用 Rake 等的软件包。

几天前我最初使用以下方法安装了 ruby​​:

这让我可以在 Unity 测试框架中使用 rake。现在我想使用 CMock。然后使用 CMockcd进入目录的说明

所以我使用以下方法安装捆绑器:

但随后bundle install连续运行要求我输入密码。所以我尝试:

对 /var/lib/gems/1.9.1 的写入权限失败。所以我尝试:

安装OK所以我再试bundle install一次。但仍然不断被要求输入我的密码。所以我尝试:

并得到一个警告,我不应该以 root 身份运行 bundler:

不要以 root 身份运行 Bundler。如果需要,Bundler 可以请求 sudo,并且以 root 身份安装您的 bundle 将破坏此计算机上所有非 root 用户的应用程序。

如何正确安装它以便可以按预期运行它?

注意:我已经看到关于这个主题还有其他几个问题,我都没有理解这些问题的答案,所以让我强调一下,我不是一个 ruby​​(甚至是 web 堆栈)开发人员——我需要这个外行的术语可能的。

另请注意:我确实看到了几次提到 RVM 和 rbenv。我不确定它们是否特别与这些问题有关,或者是否需要其中一个或两个。我目前也没有。我即将研究他们现在的确切情况。

注意第三点:我的平台是 WSL(所以是 Ubuntu)。

0 投票
2 回答
1591 浏览

c - 如何在 C 中模拟同一 UUT 中的函数

我正在学习在现有的嵌入式 C 代码库(我可以调整以适应)上使用 Ceedling 和用于模拟的 CMock 进行单元测试。

我遇到过这样一种情况,一个单元中的一个函数调用同一单元中的第二个函数。

我不想测试foo_a()作为测试的一部分foo_b() 。我如何模拟foo_a()以便我仍然可以测试它是否被调用但不测试foo_a()函数本身?

0 投票
1 回答
394 浏览

c - 如何测试具有内部状态的函数?

我正在使用 Ceedling 对以下功能进行单元测试。

使用如下测试:

该函数具有函数范围静态变量形式的内部状态voltageGoodhyst(因为输出是滞后的)。

由于滞后,我的测试必须按一定顺序进行。这很糟糕。我有点想避免使变量具有更广泛的范围,因为这是唯一与此功能相关的函数(指向的对象ParametersHandle_t符合特定的布局,所以我也不能在那里添加它)......是还有其他方法可以调整或编写测试,以便不需要按特定顺序执行吗?