- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 CUnit 进行项目单元测试。我需要测试我是否使用正确的参数调用 libc 函数以及我是否以正确的方式处理它们的返回值。例如:如果我调用 bind(...) 函数 - 我想检查我传递了哪个 af 参数并断言如果这是错误的,我还想模拟它的返回值并断言如果我检查它正确的方法。
出于这些目的,我希望 CUnit 环境有一个内置机制,让我在测试时调用“模拟”bind() 函数,在运行代码时调用真正的 bind() 函数——但我不能找到这样的东西。
如果我遗漏了 CUnit 中的某些内容,您能否告诉我,或者建议一种实现方法。
谢谢,乔。
最佳答案
不幸的是,您不能使用 CUnit 模拟 C 中的函数。
但是您可以通过使用和滥用定义来实现您自己的模拟函数:假设您在编译测试时定义了 UNITTEST,您可以在测试文件(或包含文件)中定义如下内容:
#ifdef UNITTEST
#define bind mock_bind
#endif
在您将在测试模式下编译的 mock_helper.c 文件中:
static int mock_bind_return; // maybe a more complete struct would be usefull here
static int mock_bind_sockfd;
int mock_bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen)
{
CU_ASSERT_EQUAL(sockfd, mock_bind_sockfd);
return mock_bind_return;
}
然后,在你的测试文件中:
extern int mock_bind_return;
extern int mock_bind_sockfd;
void test_function_with_bind(void)
{
mock_bind_return = 0;
mock_bind_sockfd = 5;
function_using_bind(mock_bind_sockfd);
}
关于c++ - CUnit - 'Mocking' libc 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8339094/
对不起,我知道我不应该 free() 两次指针,但是我如何检查指针是否尚未释放?检查是否为空?我不知道,因为有人告诉我 free() 命令不会在内存中写入 null,而只是释放空间!帮助 !!非常感谢
我需要使用 C 和 CUnit 编写一个程序来测试一些简单的堆栈函数并使用“Makefile”,但是当我尝试编译它时,我总是遇到相同的错误。当我编写“make”命令时,ubuntu 上的终端会显示以下
背景 CUnit 提供了 CU_FAIL 函数,它允许使用选定的消息来指示测试失败。调用 CU_FAIL("failure message") 会使封闭测试失败,打印包含 CU_FAIL("failu
这件事正在引起悲伤;我想掌握 CUnit。 已使用以下说明安装它: http://macappstore.org/cunit/ 我在命令行中使用以下命令:gcc myprog.c -Wall -Wfl
我一直在寻找答案,但还没有找到。问题是,我需要为我用 C 编写的程序做一些测试用例。问题是,某些函数接受用户输入,这使得我的测试用例等待输入,这不是我想要的。 这是我的测试用例之一: void tes
我正在使用 CUnit 测试此代码。我收到此错误消息: /bin/sh: line 1: 44477 Segmentation fault: 11 ./build/Debug/GNU-MacOSX/t
我在 C 中使用单元测试时遇到问题,我尝试在我的计算机中安装 CUnit,然后包含库。 我已经按照 steeps 安装了 CUnit: 1 - download the sources 2 - con
我们想使用 CUnit 来测试我们开发的共享库。 共享库是通过标准的 Solaris LD_PRELOAD 机制加载的,它使用环境变量根据文件路径将包含文件路径的字符串重新映射到新的日期和时间。 初始
我将单元测试放在运行在 hudson 上的 C 中,但是当我有一个失败的测试时,它表明构建成功,但必须显示为失败! 我正在使用 gcc 在 hudson 中像这样编译和运行可执行文件: gcc -lc
尝试在 NetBeans 上测试我的 C 项目,测试永远不会结束,而输出是: Test: testFileOne ...passed Test: testFileTwo ...passed
我在 Ubuntu Trusty64 上安装了 libcunit1-dev包(2.1-2.dfsg-1)。这带有安装在 /usr/lib/pkgconfig/cunit.pc 中的 pkg-confi
我已将该库下载到桌面,但当我尝试通过运行 ./configure 命令安装它时,出现错误: bash: ./configure: 没有这样的文件或目录 我查看了关于 SO 的 2 个现有问题( lin
对于 Jenkins 的测试框架,我使用的是 CUnit。在 Jenkins 中运行时,结果永远不会正确。当我检查 CUnit 的输出时,它不符合 Junit 标准。 XML 文件甚至不符合 XML!
有人知道可以自动为 C 代码生成测试和 stub 以与 CUnit 框架一起工作的免费/商业工具吗? 最佳答案 尝试使用 CMock 生成头文件的 stub 实现。 关于testing - 使用 CU
我在 hudson 中寻找一些运行单元测试的插件,我在构建任务后得到两个名称,以及 CMake 构建,但根据描述,任何人都是为运行单元测试而创建的,我想要一些关于对我有帮助的工具的指示实现这一点,或者
我正在使用 CUnit 进行项目单元测试。我需要测试我是否使用正确的参数调用 libc 函数以及我是否以正确的方式处理它们的返回值。例如:如果我调用 bind(...) 函数 - 我想检查我传递了哪个
有人设法为 Windows 构建 CUnit 库吗? 我想在windows下运行我目前在linux下开发的相同的单元测试,所以我需要一个windows版本的cunit共享库来链接 我很痛苦 安装了 M
我有一个 gradle 项目,用于 gradle(2.10 版)中的 native c 应用程序,由多个组件组成: components { component_1(NativeLibraryS
我想在我的项目中运行cunit测试并使用Eclipse开发它,如何将cunit集成到Eclipse,编写和运行案例。我不知道,谁能帮帮我? 最佳答案 我有一个笔记如何去做。希望对你有帮助 http:/
我想用 CUnit 测试一些代码。有谁知道是否可以进行 walktrough 分析? 我想要一些东西,说明你已经测试了 80% 的功能。 必须确保测试达到 100% 的覆盖率。 最佳答案 有一些工具可
我是一名优秀的程序员,十分优秀!