单元测试之类型测试

发表于:2018-4-17 11:23

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:kinglon    来源:Windows客户端开发

  问题引入
  定义接口A,接口A有两种实现B和C,现有一组测试用例对接口A进行测试,这套测试用例对B和C均适用,区别在于实例化时是使用B还是C,gtest把这类测试称为类型测试,gtest只要求一套测试用例可以测试类型B也可以测试类型C,不要求B和C要满足一定关系。gtest类型测试特性一般用于接口测试
  目标
  掌握使用gtest模板测试夹具进行类型测试。
  模板测试夹具
  gtest使用带有模板参数的测试夹具进行类型测试,现以一个实例讲解如何使用模板参数的测试夹具进行类型测试。
  定义一个求和接口SumInterface,AccumulationSum和QuickSum是两种不同的实现方式,AccumulationSum从小到大累加,QuickSum使用公式:(首项+末项)*项数/2 来计算。两种实现方式未考虑参数from > to 情况,所以测试将会不通过。现编写测试用例对接口SumInterface进行测试。
  首先,定义测试夹具SumTest,带有模板参数T,SumTest内部实现使用模板参数T实例化SumInterface对象sum_util_。
  然后,使用宏TYPED_TEST_CASE将测试夹具与要测试的类型进行绑定,宏TYPED_TEST_CASE有两个参数:测试场景名称,类型。测试场景名称必须与测试夹具名称一样。类型使用模板类Types构造,本次测试类型为AccumulationSum和QuickSum。第2个参数直接写Types<AccumulationSum,QuickSum>编译器会报警告,于是用typedef定义一个新的名字。
  最后,使用宏TYPED_TEST定义三个测试用例FromGreatTo、FromEqualTo、FromLessTo,宏TYPED_TEST参数和TEST、TEST_F一样。宏TYPED_TEST会生成2个测试场景共6个测试用例,类型AccumulationSum的测试场景和类型QuickSum的测试场景各3个测试用例,gtest内部实现使用宏递归技巧在编译时自动生成代码。
  总结
  类型测试三步骤:
  定义模板测试夹具
  使用宏TYPED_TEST_CASE将测试夹具与要测试的类型进行绑定
  使用宏TYPED_TEST定义测试用例


上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号