博客
关于我
什么是单元测试中的打桩
阅读量:737 次
发布时间:2019-03-21

本文共 996 字,大约阅读时间需要 3 分钟。

桩代码(Stubbing)是软件开发中用于替代关联代码或未实现代码的技术。具体而言,当函数B使用B1来代替,那么B就是原函数,而B1称为桩函数。编写或生成桩代码的过程称为打桩(Stubby)。

打桩的目的

打桩的主要目的包括隔离、补齐和控制。

  • 隔离:通过将测试任务与产品项目分离,确保测试任务能独立编译、链接并运行。例如,若函数A调用了函数B,函数B再调用了函数C和D,若用桩代替函数B,那么函数A就与函数C、D无关,从而实现隔离。
  • 补齐:用桩替代未实现的代码。在并行开发中尤为常见,例如函数A调用了函数B,而函数B尚未开发完成时,可以用桩替代B,使A能够运行并测试。
  • 控制:在测试中人为设定代码行为,以满足测试需求。例如,当函数B返回随机数、网络状态或环境温度时,可以用桩函数代替B,使其返回特定测试所需的数据。

以下是一个桩函数的示例:

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;}

其中,caseNameIs()是由测试工具提供的API,用于判断用例名称,进而决定输出数据。

编写桩函数

一般来说,桩函数需要与原函数保持完全一致,只是实现不同,以便测试代码能够正确链接到桩函数。用于实现隔离和补齐的桩函数通常很简单,即将原函数声明拷贝过来,并添加一个空实现。

然而,实现控制功能的桩函数可能会更复杂,要根据测试需求输出合适的数据。例如,上述的GetTemperature函数不仅实现了隔离和补齐,还通过测试工具控制输出特定温度值。

总之,打桩是一种有效的测试工具,能够帮助开发者在测试过程中隔离、补齐或控制相关代码,从而提高测试效率和代码质量。

转载地址:http://cefrz.baihongyu.com/

你可能感兴趣的文章
Mysql8在Centos上安装后忘记root密码如何重新设置
查看>>
Mysql8在Windows上离线安装时忘记root密码
查看>>
MySQL8找不到my.ini配置文件以及报sql_mode=only_full_group_by解决方案
查看>>
mysql8的安装与卸载
查看>>
MySQL8,体验不一样的安装方式!
查看>>
MySQL: Host '127.0.0.1' is not allowed to connect to this MySQL server
查看>>
Mysql: 对换(替换)两条记录的同一个字段值
查看>>
mysql:Can‘t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock‘解决方法
查看>>
MYSQL:基础——3N范式的表结构设计
查看>>
MYSQL:基础——触发器
查看>>
Mysql:连接报错“closing inbound before receiving peer‘s close_notify”
查看>>
mysqlbinlog报错unknown variable ‘default-character-set=utf8mb4‘
查看>>
mysqldump 参数--lock-tables浅析
查看>>
mysqldump 导出中文乱码
查看>>
mysqldump 导出数据库中每张表的前n条
查看>>
mysqldump: Got error: 1044: Access denied for user ‘xx’@’xx’ to database ‘xx’ when using LOCK TABLES
查看>>
Mysqldump参数大全(参数来源于mysql5.5.19源码)
查看>>
mysqldump备份时忽略某些表
查看>>
mysqldump实现数据备份及灾难恢复
查看>>
mysqldump数据库备份无法进行操作只能查询 --single-transaction
查看>>