强大的c语言单元测试框架:Check

发表于:2010-5-19 17:09

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

  C 语言的单元测试框架,上 WikiPedia 可以查到很多。经过一番比较之后,选定 check 作为 c 语言的单元测试框架。Check 最主要的优点是对于每一个测试用例的运行都 fork 一个子进程,这么做的原因是因为 C 语言的独特性:

  * 其它语言如 Java,Python,Ruby等,单元测试出错最多不过是抛出异常

  * C 语言如果指针操作错误,乱指一气,可是会 coredump的。测试框架因此直接退出,用户是看不到任何返回的,只有郁闷的 coredump

  * Check 的单元测试运行在 fork 的子进程中,可以避免测试框架由于 coredump 而崩溃,优点显而易见

  但是在 Debian 上安装 check,示例代码竟然没有办法编译通过,陷入忙等待,显然是陷入了一个死循环。

  Debian 上安装 check,部署了下列文件(只列出主要文件):

$ dpkg -L check
/usr/include/check.h
/usr/share/aclocal/check.m4
/usr/share/doc/check/examples/README
/usr/share/doc/check/examples/Makefile.am
/usr/share/doc/check/examples/configure.ac
/usr/share/doc/check/examples/tests/check_money.c
/usr/share/doc/check/examples/tests/Makefile.am
/usr/share/doc/check/examples/src/money.c
/usr/share/doc/check/examples/src/Makefile.am
/usr/share/doc/check/examples/src/money.h
/usr/share/doc/check/examples/src/main.c
...

  将示例拷贝到工作目录,运行,陷入可怕的死循环! CPU 占用 100%:

$ cp -a /usr/share/doc/check/examples examples
$ cd examples
$ autoreconf --install -v
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal

  我们在运行 autoreconf 时间使用了 -v 参数,看到发生死循环是在运行 aclocal 命令时。怎么办呢?

  着急的用户,看这里:

  将 configure.ac 中的如下内容

# CHECK_LIBS accordingly.
#  AM_PATH_CHECK([MINIMUM-VERSION,
#                [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
AM_PATH_CHECK()

  修改为:

PKG_CHECK_MODULES([CHECK], [check >= 0.9.4])

  之后再参照 README 中的说明执行就可以了:

$ autoreconf --install
$ ./configure
$ make
$ make check

31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号