标签: cunit

如何测试写入stdout的代码?

如何在CUnit中为打印到stdout的函数编写测试,以验证其输出?

要测试的示例函数:

void print()
{
    printf("Hello world");
}
Run Code Online (Sandbox Code Playgroud)

它的单元测试应该以某种方式验证"Hello world"是否已打印到控制台:

void test_print()
{
    // how to assert?
}
Run Code Online (Sandbox Code Playgroud)

我该怎么办呢?

c cunit

7
推荐指数
1
解决办法
3672
查看次数

是否有在Apache C模块上运行单元测试的框架?

我即将对现有的Apache C模块进行一些更改,以修复一些可能的安全漏洞和一般的不良做法.但是,代码的功能必须保持不变(除非修复错误).标准回归测试的东西似乎是有序的.我想知道是否有人知道在代码中运行一些回归单元测试的好方法.我正在考虑使用C-Unit,但是对于Apache APR和状态结构的所有关系,我想知道是否有一种很好的方法来测试它.是否有任何预先构建的框架可以与C-unit一起使用?

谢谢

彼得

c apache testing unit-testing cunit

5
推荐指数
1
解决办法
1191
查看次数

CUnit的一个很好的教程?

我正在寻找CUnit的在线教程.经过多次"谷歌搜索"后,我遇到的唯一一个是关于sourceforge的CUnit文档和这个.其中没有一个可以真正被描述为带有"走路"工作示例的教程.

有没有人知道CUnit教程实际上是通过测试示例程序?

c cunit

5
推荐指数
0
解决办法
6881
查看次数

netbeans cunit测试案件永远不会结束

试图在NetBeans上测试我的C项目,测试永远不会结束,而输出是:

   Test: testFileOne ...passed   Test: testFileTwo ...passed

 Run Summary:    Type  Total    Ran Passed Failed Inactive
               suites      1      1    n/a      0        0
                tests      2      2      2      0        0
              asserts      8      8      8      0      n/a

 Elapsed time =    0.000 seconds
Run Code Online (Sandbox Code Playgroud)

即使它看起来完整,进度条仍然闪耀着0.0%的值.

测试用例都是这样的:

void testMethod() {
     CU_ASSERT(1 == 1);
     //other lines of code..
     CU_ASSERT(0 == 0);
 }
Run Code Online (Sandbox Code Playgroud)

每个函数有多个CU_ASSERT.NetBeans自动生成的测试代码的一些行为.

命令

make test
Run Code Online (Sandbox Code Playgroud)

从命令行工作就像一个魅力,结束没有问题.

以前有人遇到过这个问题吗?没有捆绑我的笔记本电脑的任何方式来解决它?提前感谢您的每一条评论.

c testing netbeans cunit

5
推荐指数
1
解决办法
739
查看次数

flex bison扫描器解析的单元测试,如何驱动测试用例

我有一个关于如何在单元测试中“驱动”基于 flex bison 的解析器扫描仪的问题。

最终的解决方案将是一个可用的命令解析器或 telnet 到目标板。我有一个使用 stdin 的完全工作的 flex bison 实现。

现在我的重点是为命令解析器运行单元测试。

我希望能够为解析器(一个命令)提供一个“const 字符串”,然后测试在应用程序中(在应用程序存根中)调用了相应的命令。

我不知道如何为此设置 flex 和 bison。请在下面找到测试用例:

status_cmd_test.c:

#include "CUnit/Basic.h"
#include "cmd_stub.h"


void scan_string(const char* str);

void testSTATUS_OK(void)
{

  scan_string("status\n\0\0");
  CU_ASSERT(1 == status_sub_nrof_invokes())

}
Run Code Online (Sandbox Code Playgroud)

摘自 cmd_lexer.l:

void scan_string(const char* str)
{
  YY_BUFFER_STATE buf;
  buf = yy_scan_string(str);
  yylex();
  yy_delete_buffer(buf);
}
Run Code Online (Sandbox Code Playgroud)

cmd_parser.y 不包含任何 c 代码,只有野牛语法。

摘自 cmd_test.c(有 cunit 代码所在的 int main())

if (NULL == CU_add_test(suite_p, "test of status", testSTATUS_OK))
{
  CU_cleanup_registry();
  return CU_get_error();
}

/* Run all tests using the …
Run Code Online (Sandbox Code Playgroud)

bison cunit flex-lexer

5
推荐指数
1
解决办法
1364
查看次数

CUnit - '模拟'libc函数

我正在使用CUnit进行项目单元测试.我需要测试我是否使用正确的参数调用libc函数以及我是否以正确的方式处理它们的返回值.例如:如果我调用bind(...)函数 - 我想检查哪个af param我传递并断言如果这是错误的,并且我想模拟它的返回值并断言如果我检查它正确的方式.

出于这些目的,我希望CUnit环境有一个内置机制让我在测试时调用'mocked'bind()函数,并在运行代码时调用真正的bind()函数 - 但我找不到类似的东西这个.

如果我在CUnit中遗漏了某些东西,或者可能建议一种方法来实现这一点,你能告诉我吗?

谢谢,乔.

c c++ unit-testing cppunit cunit

4
推荐指数
1
解决办法
2068
查看次数

如何从C弹出/清除Lua调用堆栈

我想在Lua调用的C函数中弹出/清理Lua调用堆栈.这可能吗?

背景:
我希望我的C库及其扩展脚本使用相同的测试框架.(我知道Lua存在各种单元测试工具.我不在乎;我想要一个报告)我将CUnit包装在一层薄薄的Lua中.CUnit提供了致命和非致命测试断言的选择.致命的断言导致立即longjmp退出测试并重新进入框架运行器.如果我没有先清理堆栈,这似乎会对Lua VM做坏事.

堆栈可能看起来像:

#0. C:   assert_wrapper_fcn(test, fatal)
#1. Lua: assert_fcn(bool)
#2. Lua: test_fcn()
#3. C:   runner(&test_fcn)
Run Code Online (Sandbox Code Playgroud)

我想清理#0和#3之间的所有内容.我知道的方法签名test_fcn()assert_fcn(bool),但仅此而已.

c lua cunit

3
推荐指数
1
解决办法
1917
查看次数

未找到符号 - 雪豹上的CUnit

我刚用MacPorts/DarwinPorts在Snow Leopard上安装了CUnit.安装很顺利,但是,在尝试运行单元测试时遇到错误:

dyld: Symbol not found: _acs_map
  Referenced from: /opt/local/lib/libcunit.1.dylib
  Expected in: flat namespace
 in /opt/local/lib/libcunit.1.dylib
Trace/BPT trap
Run Code Online (Sandbox Code Playgroud)

有没有人遇到过这个问题,或者有没有人成功让CUnit以其他​​方式使用Snow Leopard?

macports cunit avr-gcc osx-snow-leopard

1
推荐指数
1
解决办法
589
查看次数

Homebrew Mac M1 找不到安装

我刚刚换用 M1 MacBook Air,但在使用 Homebrew 时遇到了问题。我认为安装很顺利,然后我使用给定的命令将其添加到我的路径中:

Run these two commands in your terminal to add Homebrew to your PATH:

    echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/xxx/.zprofile
    eval "$(/opt/homebrew/bin/brew shellenv)"
Run Code Online (Sandbox Code Playgroud)

我也brew install cunit这样做了,然后当我输入brew listCUnit 时,它就列在那里,所以我假设 cunit 的brew 安装工作正常。

但是当我运行我的 C 测试代码时,我得到的是:

test/test.c:3:10: fatal error: 'CUnit/Basic.h' file not found
#include <CUnit/Basic.h>
         ^~~~~~~~~~~~~~~
1 error generated.
make: *** [test_compile] Error 1
Run Code Online (Sandbox Code Playgroud)

我已经解决这个问题三天了,打电话给苹果支持,搜索了与此相关的每个页面,但仍然找不到有效的解决方案。

有人遇到过同样的问题吗?请帮忙

c installation homebrew cunit homebrew-cask

1
推荐指数
1
解决办法
6591
查看次数