华为云计算 云知识 什么是Cmockery
什么是Cmockery

简介

Cmockery是Google发布的用于C单元测试的一个轻量级的框架。它很小巧,对其他开源包没有依赖,对被测试代码侵入性小。

编译和测试方式

1.选择操作环境

本文选用华为鲲鹏云服务ECS KC1实例做测试

2.获取源代码

https://github.com/google/cmockery/releases提供Cmockery各版本的源码压缩包,可以直接下载。

3.编译源代码

本文以“cmockery-0.1.2”版本为例,下载源码,并编译安装。

1)下载Cmockery源码。

cd
wget https://codeload.github.com/google/cmockery/tar.gz/v0.1.2

2)解压Cmockery源码。

tar -zxvf v0.1.2

3)编译安装Cmockery。

cd cmockery-0.1.2
./configure --build=aarch64-unknown-linux-gnu
make
make install

4.测试已完成编译的软件

步骤一:设置环境变量

1)编辑“/etc/profile”文件,添加环境变量。

a.添加“LD_LIBRARY_PATH”环境变量。

vi /etc/profile

修改内容如下:

export LD_LIBRARY_PATH=/usr/local/lib

b.使环境变量生效。

source /etc/profile

2)查看“LD_LIBRARY_PATH”环境变量是否修改生效。

echo $LD_LIBRARY_PATH

回显内容如下:

/usr/local/lib

步骤二:测试Cmockery

1)新建一个文件夹用于Cmockery单元测试。

cd /root/cmockery-0.1.2
mkdir math_demo

2)进入“math_demo”,创建“math.c”源文件,用于待测代码模块。

cd math_demo
vi math.c

将下面内容复制到“math.c”文件中。

int add(int a, int b)   

{  

    return a + b;  

}  

int sub(int a, int b)   

{  

    return a - b;  

}

3)进入“math_demo”,创建“test_math.c”源文件,用于测试用例和main函数模块。

cd math_demo

vi test_math.c

将下面内容复制到“test_math.c”文件中。

#include <stdarg.h>  

#include <stddef.h>  

#include <setjmp.h>  

#include <google/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);  

}

4)编译源文件。

gcc math.c test_math.c -lcmockery

编译完成后,“math_demo”文件夹下会生成“a.out”文件。

5)运行程序,查看单元测试是否顺利执行。

./a.out

回显信息如下,则表示Cmockery安装成功且可以正常运行。

test_add: Starting test

test_add: Test completed successfully.

test_sub: Starting test

test_sub: Test completed successfully.

All 2 tests passed

已知问题

问题描述:

5)中,执行 ./out命令时,提示无法加载“libcmockery.so.0”的错误,如下:

./a.out: error while loading shared libraries: libcmockery.so.0: cannot open shared object file: No such file or directory

问题原因:缺少“LD_LIBRARY_PATH”环境变量配置。

解决方法:请参见步骤一:设置环境变量设置“LD_LIBRARY_PATH”环境变量,确保环境变量生效后,再重新执行步骤二:测试Cmockery。

上一篇:为什么需要设备发放服务? 下一篇:lzop是什么