请教一个函数的testcase设计方法
被测函数:ucharfl_evt_alz(struct TASK_IF_MSG *rcvmsg)
{
struct SL_IPT_MSG*slmsg;
uchar ret;
struct CALL_PARA *rcvmsg2;
structTASK_IF_MSG3 *msg3;
slmsg = (struct SL_IPT_MSG *)rcvmsg;
ful_port = 0;
ret= 0;
switch(rcvmsg->ifcode)
以下省略
}
在写testcase时:下面红色语句是否正确?顺便阐述一下理由。谢谢大侠了。
void test_fl_evt_alz()
{
struct TASK_IF_MSG *rcvmsg;
struct SL_IPT_MSG *slmsg;
rcvmsg=( struct TASK_IF_MSG * ) malloc (sizeof (struct TASK_IF_MSG ));
rcvmsg=( struct SL_IPT_MSG * ) malloc (sizeof (struct SL_IPT_MSG ));
slmsg=rcvmsg;
以下省略
}
急等
你写错了!
rcvmsg=( struct TASK_IF_MSG * ) malloc (sizeof (struct TASK_IF_MSG ));rcvmsg=( struct SL_IPT_MSG * ) malloc (sizeof (struct SL_IPT_MSG ));
-------这样写, 会造成第一次分配的空间已经"飞"了,因为没有任何一个指针指向它.
呵呵,你是菜鸟吧,我写C都十几年了.
回复 #2 TestCenter 的帖子
说的一点没错,我是菜鸟那第一条malloc不写的话,可以直接对rcvmsg->ifcode赋值吗?
譬如在这下面 rcvmsg=( struct SL_IPT_MSG * ) malloc (sizeof (struct SL_IPT_MSG ));
slmsg=rcvmsg;
rcvmsg->ifcode=2;
回复 #3 liulinzhu 的帖子
可以的,因为slmsg = (struct SL_IPT_MSG *)rcvmsg;之后的switch(rcvmsg->ifcode) 只是对rcvmsg进行处理,而没有对slmsg操作,不会有什么影响初始化只需要对传入函数的参数分配空间即可。
rcvmsg=( struct TASK_IF_MSG * ) malloc (sizeof (struct TASK_IF_MSG ));
struct SL_IPT_MSG*slmsg;
slmsg = (struct SL_IPT_MSG *)rcvmsg;(这句的意思是slmsg指向了rcvmsg所指的空间,这里可能要判断以下SL_IPT_MSG的字节大小是不是小于或等于TASK_IF_MSG 所占字节的大小,如果不是就出错了。)
switch(rcvmsg->ifcode)...
这样就没有问题了
回复 #4 xiaocuier 的帖子
slmsg = (struct SL_IPT_MSG *)rcvmsg;(这句的意思是slmsg指向了rcvmsg所指的空间,这里可能要判断以下SL_IPT_MSG的字节大小是不是小于或等于TASK_IF_MSG 所占字节的大小,如果不是就出错了。)差点忘了这一步!
太感激了,sdlkfj9 sdlkfj9
回复 #5 liulinzhu 的帖子
呵呵感谢俺的话,送束花或扔个鸡蛋都行。sdlkfj5 真想好好学习一下,请问这些是什么编成语言,推荐几本书!谢谢!
回复 #7 yeziqingqing 的帖子
谢谢你的鲜花,这是用C语言编写的代码,至于书嘛,呵呵,只是用过谭浩强的《C程序设计》,其他都来源于平时的开发实践。 好好佩服!下功夫学学!特想做性能测试!回复 #9 yeziqingqing 的帖子
个人认为测试有发展,支持测试! sdlkfj3 鲜花。。。。回复 #11 不要长大的小孩 的帖子
猪头,就知道鲜花sdlkfj2 sdlkfj2
页:
[1]