什么是Cmockery

簡(jiǎn)介

Cmockery是Google發(fā)布的用于C單元測(cè)試的一個(gè)輕量級(jí)的框架。它很小巧,對(duì)其他開源包沒有依賴,對(duì)被測(cè)試代碼侵入性小。

編譯和測(cè)試方式

1.選擇操作環(huán)境

本文選用華為鯤鵬云服務(wù)ECS KC1實(shí)例做測(cè)試

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.測(cè)試已完成編譯的軟件

步驟一:設(shè)置環(huán)境變量

1)編輯“/etc/profile”文件,添加環(huán)境變量。

a.添加“LD_LIBRARY_PATH”環(huán)境變量。

vi /etc/profile

修改內(nèi)容如下:

export LD_LIBRARY_PATH=/usr/local/lib

b.使環(huán)境變量生效。

source /etc/profile

2)查看“LD_LIBRARY_PATH”環(huán)境變量是否修改生效。

echo $LD_LIBRARY_PATH

回顯內(nèi)容如下:

/usr/local/lib

步驟二:測(cè)試Cmockery

1)新建一個(gè)文件夾用于Cmockery單元測(cè)試。

cd /root/cmockery-0.1.2
mkdir math_demo

2)進(jìn)入“math_demo”,創(chuàng)建“math.c”源文件,用于待測(cè)代碼模塊。

cd math_demo
vi math.c

將下面內(nèi)容復(fù)制到“math.c”文件中。

int add(int a, int b)   

{  

    return a + b;  

}  

int sub(int a, int b)   

{  

    return a - b;  

}

3)進(jìn)入“math_demo”,創(chuàng)建“test_math.c”源文件,用于測(cè)試用例和main函數(shù)模塊。

cd math_demo

vi test_math.c

將下面內(nèi)容復(fù)制到“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”文件夾下會(huì)生成“a.out”文件。

5)運(yùn)行程序,查看單元測(cè)試是否順利執(zhí)行。

./a.out

回顯信息如下,則表示Cmockery安裝成功且可以正常運(yùn)行。

test_add: Starting test

test_add: Test completed successfully.

test_sub: Starting test

test_sub: Test completed successfully.

All 2 tests passed

已知問題

問題描述:

5)中,執(zhí)行 ./out命令時(shí),提示無法加載“libcmockery.so.0”的錯(cuò)誤,如下:

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

問題原因:缺少“LD_LIBRARY_PATH”環(huán)境變量配置。

解決方法:請(qǐng)參見步驟一:設(shè)置環(huán)境變量設(shè)置“LD_LIBRARY_PATH”環(huán)境變量,確保環(huán)境變量生效后,再重新執(zhí)行步驟二:測(cè)試Cmockery。