看法单位测试中的打桩

-

  甚么是桩

  桩,或称桩代码,是指用来替换关联代码或许未实现代码的代码。假设函数B用B1来替换,那么,B称为原函数,B1称为桩函数。打桩就是编写或生成桩代码。

  打桩的目标

  打桩的目标主要有:隔离、补齐、控制。

  隔离是指将测试义务从产品项目平分别出来,使之可以自力编译、链接,并自力运转。隔离的基本方法就是打桩,将测试义务以外的,而且与测试义务相干的代码,用桩来替换,从而完成分别测试义务。例如函数A调用了函数B,函数B又调用了函数C和D,假设函数B用桩来替换,函数A便可以完整切断与函数C和D的关系。

  补齐是指用桩来替换未完成的代码,例如,函数A调用了函数B,而函数B由其他依次员编写,且未完成,那么,可以用桩来替换函数B,使函数A可以运转并测试。补齐在并行开辟中很经常使用。

  控制是指在测试时,报答设定相干代码的行动,使之契合测试需求。例如:

  externint B();

  int A()

  {

  int ret=B();

  if(ret==0)

  ;//do something

  elseif(ret==1)

  ;//do something

  else

  ;//do something

  return ret;

  }

  假设函数B前去随机数,或许前去收集形状,或许前去情况温度,等等,则当调用其实践代码时,函数A很难测试,这时候可以用桩函数B1来替换B,使其前去测试所需求的数据。

  一个桩函数,能够既具有控制功用,又具有隔离或补齐功用。

  编写桩

  通俗来讲,桩函数要具有与原函数完整不合的本相,仅仅是完成分歧,如许测试代码才华准确链接到桩函数。

  用于完成隔离和补齐的桩函数通俗比拟复杂,只需把原函数的声明拷过去,加一个空的完成,能经过编译链接就好了。

  比拟复杂的是完成控制功用的桩函数,要依据测试的需求,输入适宜的数据,下面是一个示例:

  //获得情况温度。温度由出参pTemperature输入,前去值表现获得温度可否胜利,假设胜利,则前去1,否则前去0。

  int GetTemperature(int* pTemperature)

  {

  if(caseNameIs("failed"))

  return 0;

  if(caseNameIs("ok-23"))

  {

  *pTemperature=23;

  return 1;

  }

  if(caseNameIs("ok-25"))

  {

  *pTemperature=25;

  return 1;

  }

  if(caseNameIs("ok-28"))

  {

  *pTemperature=28;

  return 1;

  }

  return 0;

猜你喜欢