C语言单元测试工具check

C语言单元测试工具check

    • 实例

关于check的概念性描述,我在这里就不多少了,主要就是分享一下我在学习使用了check后的一些问题。

  1. 安装完check(我是在github上下载的源码安装的),在你的 /usr/local/ 目录下会有check的头文件(check.h)静态库文件,动态库文件等相关文件。C语言单元测试工具check_第1张图片
  2. 在使用check的时候就可以用check.h头文件了,和生成的库文件了。
  3. 使用的时候就是这样的结果。C语言单元测试工具check_第2张图片

实例

C语言单元测试工具check_第3张图片

这个就是整个实例的目录
test------生成的可执行文件
readme--------自己写的说明性文件,方便以后看
add目录下-------两个被测试函数
include目录 -------头文件
unit_test/test_fun.c -----自己写的测试文件,用来测试被测试的函数是否‘正确’
unit_test/test_main.c-----主要就是main函数,调用test_fun.c 中的函数,生成test文件。

add1.文件

#include 

int add(int a, int b)//求两个数的和
{
    return a + b + 1;//故意写错函数,为了测试
}

sub1.文件

因为这个文件没有用到stdio.o下的函数所以没加头文件,上一个也没用到。。

int sub(int a, int b)
{
    return a - b + 1;
}

add.h文件

#ifndef ADD_H
#define ADD_H

int add(int a, int b);

#endif

sub.h文件

#ifndef SUB_H
#define SUB_H

int sub(int a, int b);

#endif

unit_test.h文件

#include "check.h"

#ifndef UNIT_TEST_H
#define UNIT_TEST_H

Suite *make_unit_suite(void); //这个函数在头文件check.h中声明

#endif

test_fun.c文件

下面的那些函数都是在check.h中声明的,你可以在/usr/local/include/check.h中查看。(你下载的源码解压之后里面也是有的)。建议看。

#include "check.h"

#include "../include/add.h"
#include "../include/sub.h"   //头文件相对路径

START_TEST(aaa)
{
    fail_unless(add(1, 4) == 5, "error, add(1, 4) != 5over");
    //如果add(1, 4) == 5的话,就成功,否则输出后面的字符串。
}
END_TEST

START_TEST(bbb)
{
       fail_unless(sub(4, 2) == 2, "error, sub(4, 2) != 2over");
}
END_TEST

Suite *make_unit_suite(void)
{
    Suite *s = suite_create("bao1");          //创建一个名为bao1的 Suite
    TCase *tc_bao = tcase_create("bao2");   //创建一个名为bao2的a test  case(Tcase)

    suite_add_tcase(s, tc_bao);    //将a test  case添加到Tcase(bao1)中
    tcase_add_test(tc_bao, aaa);     //将a test  funtion (aaa) 添加到 a test  case(bao2)中
    tcase_add_test(tc_bao, bbb);
    return s;            //返回一个Suite的地址。
}

test_fun.c文件

SRunner------也就是 a suite runner
这里大体上就是main 函数调用你在test_fun.c文件中的函数然后运行。

#include 
#include 

#include "../include/unit_test.h"

int main(int argc, const char  *argv[])
{
    int n = 0;
    SRunner *sr = NULL;
    sr = srunner_create(make_unit_suite());
    srunner_run_all(sr, CK_NORMAL);
    n = srunner_ntests_failed(sr);
    srunner_free(sr);
    return (n == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
}

makefile文件

这个个文件,建议不要复制,我就是复制网上的然后就是报错,
错因就是tab键, 运行命令前面必须只有一个tab键。

vpath %.h include
vpath %.c add
vpath %.c unit_test

objects = add1.o sub1.o test_fun.o 
test:test_main.c $(objects)
	gcc -Iinclude $^ -o $@ -lcheck

all:$(objects)
$(objects): %.o : %.c
	gcc -c -Iinclude $< -o $@

.PHONY:clean
clean:
	rm *.o

readme 文件
C语言单元测试工具check_第4张图片
欢迎关注公众号:
C语言单元测试工具check_第5张图片

你可能感兴趣的:(C语言,C语言,单元测试工具,check)