问题标签 [cunit]

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

unit-testing - 如何配置 Gitlab CI 来解析测试输出?

我正在研究 Gitlab,我想设置一个 CI(这是我第一次配置类似的东西,请假设我是初学者)

我用 Cunit 编写了一个代码,并在 Cunit 中进行了一个简单的测试,我为 CI 配置了一个“构建”作业和一个“测试”作业。我的测试工作成功,而我编写了一个 KO 测试,当我在 Gitlab 上打开该工作时,我看到失败的输出,但该工作被标记为“通过”。

如何配置 Gitlab 以了解测试失败?

我认为某处有解析配置,我在“CI / CD Setting -> Test converage parsing”中尝试过,但我认为它是错误的,并且它不起作用。

我让你输出我的测试:

0 投票
1 回答
397 浏览

c - c中的包装函数

我的任务是为现有项目(用 C 编写)编写单元测试(使用 cunit 和 cmocka),并且遇到了以下问题。当我包装在测试文件中定义的函数时,只调用原始函数。另外,无法更改测试文件的来源。我读到的所有内容都不符合第二个条件,但另一方面,很难相信单元测试框架没有为这类问题做好准备。

那么是否可以将函数调用包装到在一个文件中定义和调用的函数?

我试图通过向 cmake 文件添加适当的链接器标志来包装它。

0 投票
1 回答
294 浏览

c - CUnit CU_register_suites(suites) 错误

我正在用 CUnit 测试这段代码。我收到此错误消息:

/bin/sh:第 1 行:44477 分段错误:11 ./build/Debug/GNU-MacOSX/tests/TestFiles/f2

错在哪里?我看不到它。谁能告诉我为什么我会收到这个错误。
提前致谢

错在哪里?我看不到它。谁能告诉我为什么我会收到这个错误。
提前致谢

0 投票
0 回答
129 浏览

c - Netbeans 8.2/Cygwin:运行 CUnit 测试时出现断管错误

如果我在 Netbeans 中创建一个新的 C11 应用程序(使用自动生成的 makefile),向它的 main.c 文件添加一个只返回 0 的虚拟函数,向该函数添加一个测试,然后通过测试文件夹中的 Netbeans 运行测试,我收到以下错误:

但是,当我调试测试时,它可以正常工作。在测试整个项目时,我得到了不同的结果——有时输出以以下消息结尾:

有时我会遇到同样的错误。不管实际的测试结果没有得到输出。虽然如果我关闭 Netbeans 并重新打开,我第一次尝试测试项目时结果会正确显示,尽管后续尝试都没有。

知道这可能是什么吗?

这是使用 CUnit 2.1.3-1、make 4.2.1-2 和 gdb 7.12.1-2,所有这些都在 Windows 10 上运行的 cygwin 2.10.0 中。

这是它所指的makefile的第71-73行,如果有帮助的话:

当然,如果需要,我可以提供更多该文件,尽管如果您重现导致我出错的步骤,您应该得到相同的文件。

0 投票
2 回答
447 浏览

testing - CUnit 在测试失败时返回 0

我构建了一个在 CUnit 中执行测试的简单程序。主要功能是:

test_parse 函数使用 CU_ASSERT_FATAL。测试失败,但 main 的输出如下:

main() 返回 0。如果测试通过,它也会返回 0。我究竟做错了什么?

0 投票
3 回答
1058 浏览

c - C 中 exit() 的单元测试

我正在使用 CUnit 框架来显示测试结果。(我是一个编程和新手,所以一步一步的回答真的很感激)。

当我测试我希望 exit() 的函数时,有什么方法可以使用相同的 CUnit 框架?对我来说似乎不是这样,但我还是很想问 - 它会显示通过/失败结果以及我的其他 CUnit 测试,所以它是理想的。

如果没有,我一直在寻找其他适合新手的解决方案(例如这个 SO post),但我不能使用 GOTO/setjmp/longjmp。该解决方案还需要便携。

我正在使用 Mac & gcc 命令行来运行此代码。

编辑 建议的解决方案之一是使用 C Pre-Processor (CPP) Directive / "mocking",这看起来很理想吗?我在 test.c 文件中使用了以下代码:

这是终端给我的错误消息:

删除 (PHRASE) 仍然会产生相同的错误。

编辑 如果对其他人有帮助,使用 #ifdef 进行模拟是最终解决此问题的最简单方法。这个网站也很有帮助。

0 投票
1 回答
132 浏览

c - CUnit:动态生成的字符串失败

背景

CUnit 提供了这样的CU_FAIL功能,它允许使用选定的消息来指示测试失败。调用CU_FAIL("failure message")将使封闭测试失败,打印一个包含CU_FAIL("failure message").

问题

我想在我的失败消息中指出有问题的参数。如果我将变量动态设置为char * message所需的消息,例如"Expected i = 5, but i = 6."然后调用CU_FAIL(message),则测试失败,但只CU_FAIL(message)打印字符串。的内容message不打印。

问题

在打印动态生成的字符串的内容时,如何让 CUnit 无法通过测试?我使用的是 2.1-3 版本。

0 投票
0 回答
304 浏览

c - 无法创建预编译头 Z:\usr\include\stdio.h.gch:权限被拒绝

我正在使用 Debian9 Linux 和使用 Wine 的 Cpp-Dev。我目前正在尝试运行一些为 2006/2007 年开发的程序(用 C 编写的协议堆栈)编写的 CUnit 测试。(我需要稍后更新)

有:

  • ...Unittest.dev 文件,因此使用了 Dev-Cpp
  • ...Unittest.layout 文件
  • CUnit 文件夹,从 2006 年开始
  • 套件文件夹,包含两个测试套件
  • xmlout 文件夹
  • 主程序

目录结构有点搞砸了。它给了我一个类似 Windows 的结构。尽管它为我添加了一个 Z: 驱动器,我可以在其中访问我的 Linux 目录,以 Windows 样式编写路径...例如Z:\usr\

我将目录添加Z:\usr\include\为编译选项中的包含库。

Dev-Cpp 向我抛出此错误:

[Error] can't create precompiled header Z:\usr\include\stdio.h.gch: Permission denied

这是真的,它不应该尝试在其中写一些东西\usr\include.

尝试坚持使用 Dev-Cpp,因为它是用于创建此测试环境的工具。

解决方法是使用 Windows 机器。如果可能,希望将整个环境保留在 Linux 上。

有任何想法吗?

0 投票
1 回答
354 浏览

mingw-w64 - 如何使用 Mingw64 安装 Cunit

我需要在 Windows 上安装 CUnit。我已经有一个带有标题的 CUnit 文件夹,但它在 Linux 中,而且我没有 Windows 的库。所以我下载了 CUnit-2.1.3 并尝试按照给定的步骤安装它,使用 mingw64。但它说这configure是无法识别的。所以:

1)我必须安装 MSYS2,因为我没有找到任何方法来单独在 Mingw64 上获得所需的自动工具。

2)我不知道如何将我的 MSYS 与我的 Mingw64 构建链接(但老实说,我并不关心。我只是要安装 CUnit,然后忘记 MSYS2 并继续使用 Mingw64)

3)MSYS更新后,./configureNo such file or directory

这里有一个提示:如何在 Windows 上安装 CUnit

但是答案对我不起作用。make 回馈了很多abnormal error。但后来我发现了这个话题:Building CUnit on Windows并认为这是我的答案。几乎。

4) Libtoolize 无法识别,但我只需要找到它是哪个包并安装它。现在它说:

除了最后一个,我已经做了所有的改变,因为 Makefile.am 没有任何 ACLOCAL_AMFLAG,只有一个 RPM_FLAG。

5)automake并不好:

我安装了所有东西,但它仍然说“找不到命令”

我被困在这里。当然,我是在 MSYS2 shell 中制作的,而不是在 MinGW64 中制作的。它们仍然是分开的,除了第一次更新和我在这里所说的之外,我没有在 MSYS2 中安装任何东西。

任何想法?

编辑:在 HolyBlackCat 评论之后,我通过 MSYS 安装了 CUnit。但是,现在当我尝试启动测试(使用 MinGW64 shell)时,我得到一个abnormal program terminationwith make70642.sh: fork failed: no error[1]. 我尝试将我的 MinGW64 文件夹与 MSYS 下载的文件夹合并,但没有得到更好的结果。

0 投票
1 回答
232 浏览

c - C 单元测试:存根一个常量结构(gcc --wrap)

大家好,这是我的具体情况:

服务.h:

服务.c:

我需要存根(模拟、替换)这些函数,但我无权更改原始代码。我正在使用 gcc 来编译单元测试。我未能:

  • 直接使用 gcc 的 --wrap 选项,foo因为bar它们对于 source.c 是静态的:
  • 在对象符号上使用 gcc 的 --wrap 选项,service_api因为它不是函数
  • 只需重新分配service_api成员函数,因为结构是常量并且已经分配。

已经感谢您的帮助