l 编写Makefile.am文件,用于Automake生成Makefile.in文件,Makefile.am文件的大致框架如下:(其中xxxx为应用程序文件名,比如program.c文件的测试程序文件名我建议为check_program.c;)
TESTS = check_xxxx
noinst_PROGRAMS=check_xxxx
frame_path=xx/check-0.8.0
xxxx_docs =\
srcfilelist_1\
srcfilelist_2\
.......\
.....
xxxx_SOURCES=\
srcfilelist_1\
srcfilelist_2\
.......
EXTRA_DIST = $(xxxx_docs)
INCLUDES = -I$(frame_path)/src -I$(other_path)/include
LDADD= \$(frame_path)/src/libcheck.a
CLEANFILES=*.*~
(Makefile.am有很许多标记,可以参阅相应文档。但常用的如:noinst_PROGRAMS为生成的可执行文件,xxxx_SOURCES(应用程序名加后辍_SOURCES)为源文件列表,EXTRA_DIST为发布程序时不需要的文件列表(用此方法可以将测试文件去掉),INCLUDES为要包含的头文件路径,check的头文件位置在其安装目录下的src中;LDADD为要链接的库文件名,libcheck.a为check测试框架的库文件;)
使用Automake –a –-foreign来生成Makefile.in文件,--foreign是为了生成几个外部文件如install.sh等,如果已有这些文件则可以省略这个参数;
使用Autoconf来生成configure执行脚本;然后执行./configure来生成Makefile文件;
执行make来生成可执行程序;
3.2.2 建立测试用例:
1、以程序文件名加前辍“check_”命名测试单元文件名,比如money.c文件的测试单元文件命名为check_money.c;
2、加入测试框架头文件以及要测试的单元头文件,以check_money为例:
头文件:money.h;源文件:money.c;测试单元文件:check_money.c:
测试文件框架如下:
#include <stdlib.h>
#include <check.h>
#include "money.h"
/*建立必要的测试变量,Money为money.h中定义的结构struct money*/
Money *five_dollars;
/*单元测试初始化函数*/
void setup (void)
{
five_dollars = money_create(5, "USD");
}
/*单元测试结束函数*/
void teardown (void)
{
money_free (five_dollars);
}
/*单元测试用例,用例名为test_create*/
/*test functions: money_amout()*/
START_TEST(test_create)
{
/*功能性测试,属黑盒测试*/
/*normal test*/
fail_unless (money_amount(five_dollars) = = 5,
"Amount not set correctly on creation");
fail_unless (strcmp(money_currency(five_dollars),"USD") = = 0,
"Currency not set correctly on creation");
/*条件及错误路径测试,属白盒测试*/
/*extra test*/
}
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/