CMockery 简单熟悉

来源:互联网 发布:mac 数据作图软件 编辑:程序博客网 时间:2024/06/14 15:43

前一阵子在网上了解了CMockery测试模块,便决定自己去实测一下,其中过程有点小曲折,记录一下,也供大家参考:

环境:Ubuntu12.04


1、CMockery 下载:

       在网站的资源绝大部分都是去google下载,良民一个,打不开网页。在其他地方找到了资源,并上传到本人的CSDN资源空间,可免费下载。

2、CMockery编译:

       也是参照网上资源编译,可能是版本问题,发生错误。最后还是在CMockery Doc文档中找到了答案:

       $ sudo apt-get -y install libtool make autoconf automake gcc

       $ ./autogen.sh
       $ ./configure
       $ make

       $ make

       当然在configure时,我们可以加上自己的选项。

3、测试

       也是采用网上的一个简单通用模块进行测试,中间小有插曲

       代码如下:

/********math.c*********/

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

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

/********main.c*********/

#include <stdarg.h>  
#include <stddef.h>  
#include <setjmp.h>  
#include <cmockery.h>  

/* Ensure add() adds two integers correctly. */  
void test_add(void **state) {  
    assert_int_equal(add(3, 3), 6);  
    assert_int_equal(add(3, -3), 0);  
}
 
/* Ensure sub() subtracts two integers correctly.*/  
void test_sub(void **state) {  
    assert_int_equal(sub(3, 3), 0);  
    assert_int_equal(sub(3, -3), 6);  
}  


int main(int argc, char *argv[])   
{  
    const UnitTest tests[] = {  
        unit_test(test_add),  
        unit_test(test_sub),  
    };  
    return run_tests(tests);  

编译:gcc -o main_test_run math.c main.c -I [安装头文件目录]  -L [安装库目录] -lcmockery

[安装头文件目录]、[安装库目录]在你configure时指定,如果没有指定系统会默认安装到 /usr/include 和 /usr/lib 目录下,或者其他路径。

出现如下错误:

err1:

In file included from main.c:4:0:
/home/share/cmockery/Demo/include/cmockery/cmockery.h:19:40: fatal error: cmockery/cmockery_override.h: No such file or directory

way:

将你安装文件位置下的cmockery.h的20行,由 #include <cmockery/cmockery_override.h>
改为#include <cmockery_override.h>

err2:

/cmockery.h:402:1: error: unknown type name ‘uintmax_t’

way:

将你安装文件位置下的cmockery.h里,添加#include <stdint.h>

err3:

main.c:25:27: error: macro "run_tests" requires 2 arguments, but only 1 given

way:

在开发包里发现:

#define run_tests(tests, test_suite_name) _run_tests(tests, \
        sizeof(tests) / sizeof(tests)[0], \
        (test_suite_name))

修改main.c文件的return run_tests(tests)为return run_tests(tests, “run”); 
重新编译ok,没问题。

 导入CMockery库环境 export LD_LIBRARY_PATH=[安装库目录]:$LD_LIBRARY_PATH
$ ./main_test_run
[==========] Running 2 test(s).
[ RUN      ] test_add
[       OK ] test_add
[ RUN      ] test_sub
[       OK ] test_sub
[==========] 2 test(s) run.
[  PASSED  ] 2 test(s).
[  FAILED  ] 0 test(s).
[  REPORT  ] Created run_xunit.xml report

终端显示了,测试结果。同样在当前文件下回生产run_xunit.xml文件,记录测试结果。文件如下


0 0
原创粉丝点击