Tag: unit testing

使用googletest测试C代码(Google C ++测试框架)

我正在尝试使用googletest测试C代码,但是当我的C头文件包含在C ++测试文件中时,我遇到了一些问题,因为g ++编译器将它们作为C ++头文件处理。 我试图在extern “C” {}包含这些头文件但没有成功。 有没有办法g ++编译器可以像C一样处理这些头文件?

unit testing错误条件 – EINTR

简而言之,如何在系统调用上对EINTR等错误条件进行unit testing。 我正在研究的一个特殊例子,它本身就是一个案例,就是当它返回带有(errno == EINTR)的EOF时是否有必要再次调用fclose。 行为取决于fclose的实现: // Given an open FILE *fp while (fclose(fp)==EOF && errno==EINTR) { errno = 0; } 如果在发生EINTR时释放fp,则此调用可能不安全。 如何测试何时(errno == EINTR)的error handling?

C数组比较

用于比较数组(在C中)以使用来自string.h memcmp的string.h吗? 我想在unit testing中比较整数和双精度数组 我不确定是否使用类似的东西: double a[] = {1.0, 2.0, 3.0}; double b[] = {1.0, 2.0, 3.0}; size_t n = 3; if (! memcmp(a, b, n * sizeof(double))) /* arrays equal */ 或写一个定制的is_array_equal(a, b, n)类型函数?

OpenGL如何进行unit testing?

有没有一种使用OpenGL命令对函数或类进行unit testing的好方法? 对于c ++,我知道我可以使该类成为模板并传递一个直接进行opengl调用的类: namespace myNamespace { struct RealOpenglCall { static inline void glVertex2fv( const GLfloat * v) { ::glVertex2fv( v ); } }; template class SomeRendering { public: SomeRendering() : v() { // set v } void Draw() { T::glVertex2fv(v); } GLfloat v[4]; }; } 在C和c ++中,我可以将函数指针传递给调用opengl函数的函数(然后用于将指针传递给mock函数的unit testing)。 我也可以链接不同的库(而不是opengl),但这听起来像是一个很大的复杂function。 那么,什么是unit testing代码调用opengl函数的其他技术呢?

测试C框架

在去年夏天与Ruby,Rails和RSpec合作之后,我学会了TATFT 。 现在我不能在没有先编写测试的情况下编写代码。 我明年将参加C语言的编程课程,我想学习写C测试驱动。 使用C进行TDD是一个好主意(甚至可能)吗? 如果是这样,有没有与C兼容的良好测试框架?

如何为另一个使用stdin输入的函数编写测试函数?

作为大学任务的一部分,我有以下function: int readMenuOption() { /* local declarations */ char option[2]; /* read in 1 char from stdin plus 1 char for string termination character */ readStdin(1 + 1, option); return (int)option[0] <= ASCII_OFFSET ? 0 : (int)option[0] – ASCII_OFFSET; } int readStdin(int limit, char *buffer) { char c; int i = 0; int read = […]

自动Cunit testing

我有一个用MinGW,Eclipse C项目编译的C库。 库包含许多模块,每个模块都可以进行测试。 什么是最好的方法(使用MACROS或其他东西)如何为这个库编写测试,在Eclipse / CDT IDE中编译运行它? 编辑:我看到有些人使用 #ifdef TEST int main(void) { …TEST LOGIC… } #endif 但不知道如何将其插入Eclipse。

C中的函数模拟(用于测试)?

我想在C中编写C库的测试。我想模拟测试的一些函数。 假设我的库是从以下源编译的: /* foo.h */ int myfunction(int x, int y); /* foo.c */ #include “foo.h” static int square(int x) { return x * x; } int myfunction(int x, int y) { return square(x) + square(y); } 我想写一个这样的测试: /* foo_test.c */ #include “foo.h” static int square(int x) { return x + 1; } int main(void) { […]

gmock可以用于存根C函数吗?

我是gmock的新手,所以我想知道如何在unit testing的测试函数中调用简单的C函数。 例: int func(int a) { boolean find; // Some code find = func_1(); return find; } 我搜索过gmock,在我的理解中,gmock没有提供存根简单C函数的function,因此我想问一下gmock是否提供了模拟或存根func_1 ? 如果不是,如何在不更改源代码的情况下在我的测试代码中手动存根func_1 ? 我正在使用谷歌测试框架进行unit testing。 谢谢。

微控制器C代码的unit testing模式

虽然有很多unit testing框架支持C,但我对如何为微控制器代码编写unit testing感到有些困难(在我的情况下是PIC,但我认为这个问题比这更普遍)。 为微控制器编写的大部分代码都围绕将配置和数据值写入寄存器,从寄存器读取输入数据以及响应中断事件。 我想知道是否有人可以提供一些最有效的方法指针。