CUnit
1.1、CUnit简介
是什么 ?:a Unit Testing Framework for C.
开发语言:C
官方主页:http://cunit.sourceforge.net
源码仓库:https://gitlab.com/cunity/cunit
1.2、通过包管理器安装CUnit
操作系统包管理器安装命令
Allvcpkg
vcpkg install cunit
vcpkg install cunit:x64-osx
vcpkg install cunit:x64-linux
vcpkg install cunit:x64-windows
macOSHomeBrewbrew install cunit
GNU/LinuxHomeBrewbrew install cunit
aptsudo apt-get install -y cunit
CentOSyumsudo yum install -y cunit
dnfsudo dnf install -y cunit
openSUSEzyppersudo zypper install -y cunit
Alpine Linuxapksudo apk add cunit

Arch Linux

ArcoLinux

Manjaro Linux

pacmansudo pacman -Syyu --noconfirm
sudo pacman -S    --noconfirm cunit
Gentoo LinuxPortagesudo emerge cunit
1.3、通过编译源码安装CUnit
1.4、CUnit中包含的头文件
1.5、CUnit中包含的库文件
  • libcunit.{a | so | dylib}
1.6、CUnit综合使用示例

需求:编写一个四则运算中的加法运算的实现,并使用CUnit进行单元测试。

设计:工程结构如下

add
└── src
    ├── include
    │   └── add.h
    ├── lib
    │   └── add.c
    └── test
        └── add.c
为了让大家看清楚整个步骤,我们尽量让工程结构简单,为此我们这里不使用诸如gmakecmakeautotools之类的构建工具,实际开发过程会使用它们。
在开始之前,请确保已经安装好了CUnit

step1、编写src/include/add.h

#ifndef ADD_H
#define ADD_H
    int add(int a, int b);
#endif

step2、编写src/lib/add.c

#include <add.h>

int add(int a, int b) {
    return a + b;
}

step3、编写src/test/add.c

#include <CUnit/CUnit.h>
#include <CUnit/Basic.h>
#include <add.h>

void test_add() {
    CU_ASSERT_EQUAL(add(0, 0), 0);
    CU_ASSERT_EQUAL(add(0, 1), 1);
    CU_ASSERT_EQUAL(add(1, 0), 1);
    CU_ASSERT_EQUAL(add(1, -1), 0);
}

// http://cunit.sourceforge.net/example.html
int main() {
    /* initialize the CUnit test registry */
    if (CUE_SUCCESS != CU_initialize_registry()) {
        return CU_get_error();
    }

    /* add a suite to the registry */
    CU_pSuite pSuite = CU_add_suite("Suite_1", NULL, NULL);
    if (NULL == pSuite) goto cleanup; 

    /* add the tests to the suite */
    if (NULL == CU_add_test(pSuite, "test add()", test_add)) goto cleanup; 

    CU_basic_set_mode(CU_BRM_VERBOSE);

    CU_basic_run_tests();

cleanup:
    CU_cleanup_registry();
    return CU_get_error();
}

step4、使用cc命令编译单元测试程序

cc -o add-test -Isrc/include -lcunit src/test/add.c src/lib/add.c

step5、运行单元测试程序

./add-test

运行效果如下:

CUnit的运行结果给出了简单的统计数据,不过这些数据不够精细。 所以,通常会结合gcovgcovrlcov之类的代码覆盖率统计工具做更为精细的统计工作, 并生成统计报告。