cmockery简单使用
一、介绍
- cmockery是用来给C语言函数做单元测试使用的。
- 代码
- 我是很推崇面向API编程的。写功能的时候,尽可能先把问题拆分成几个接口。接口命名好之后,再实现。所以,我想弄个单元测试的库。督促自己面向API编程。其次,可以积累测试用例,有利于程序的稳定性。
- 随后,我可能要实现一下自动生成单元测试文件的功能。
二、例子
-
我测试了一下之前写的几个排序函数,居然还测试出问题了,已经在博客更新修复了。 -
#include<stdio.h>
#include"cmockery.h"
int merge_sort(int *arr,int arr_len);
int heap_sort(int *arr,int arr_len);
int quick_sort(int *arr,int arr_len);
int print_hellowolrd()
{
printf("Hello Wolrd\n");
return 0;
}
void print_helloworld_test()
{
assert_int_equal(0,print_hellowolrd());
}
void heap_sort_test()
{
int i = 0;
int arr[] = {5,6,7,3,1,2,4};
int arr_len = sizeof(arr)/sizeof(arr[0]);
heap_sort(arr,arr_len);
for(i = 0 ; i < arr_len;i++)
{
assert_int_equal(i+1,arr[i]);
}
}
void quick_sort_test()
{
int i = 0;
int arr[] = {5,6,7,3,1,2,4};
int arr_len = sizeof(arr)/sizeof(arr[0]);
quick_sort(arr,arr_len);
for(i = 0 ; i < arr_len;i++)
{
assert_int_equal(i+1,arr[i]);
}
}
void merge_sort_test()
{
int i = 0;
int arr[] = {5,6,7,3,1,2,4};
int arr_len = sizeof(arr)/sizeof(arr[0]);
merge_sort(arr,arr_len);
for(i = 0 ; i < arr_len;i++)
{
assert_int_equal(i+1,arr[i]);
}
}
int main(int argc, const char *argv[])
{
const UnitTest tests[]=
{
unit_test(print_helloworld_test),
unit_test(heap_sort_test),
unit_test(quick_sort_test),
unit_test(merge_sort_test),
};
run_tests(tests);
return 0;
}
三、相关功能整理
|