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

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>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值