搭建一个UT测试用例过程中关联和继承的选择

首先交代下背景:

  在做软件的UT时候,框架使用继承的方式进行搭建,如下图所示:

  类CTestCase是一个父类,包含了所有测试中公用的方法。

  其中虚函数RunTest()作为对外启动测试的虚接口。

  Protect类型的CommonWorks()函数包含了一些必须的公用操作,包含了不可重入的一些变量和操作,将被具体测试用例调用。

  子类CConcreteTestCaseA是对软件产品具体某一个特性的测试:

  其中属性mTestAPara是测试A所独有的针对A特性的一些配置参数;

  SpecialWorksForCaseA是A特性特殊的一些操作封装;

  继承的方法RunTest用来实现具体的对特性A的操作,包括对特殊操作封装函数SpecialWorksForCaseA的调用;

  现在的问题是,新出现了一个特性B,测试它需要调用CConcreteTestCaseA::SpecialWorksForCaseA,

  但是目前已知只有极少部分特性的测试需要调用这个操作,其他特性并不需要。

  我们可以考虑将B继承自A,构成3层继承关系,如下所示:

  这样做的好处在于所有不可重入的变量和方法都会被保护起来。

  但是从逻辑上出现了 “B is a A” 的悖论。

  另一种选择则是使用关联关系,A与B保持逻辑上的sibling的关系不变,但是使用关联来实现一种类似于单一Composite的结构,如下所示:

  这样做的好处在于如下几点:

  主要的优点是保持了A与B逻辑上的关系正确性,而非“认兄为父”;

  当A已经存在的时候,不需要更多额外的修改就可以完成这种工作;

  相比于直接复制SpecialWorksForCaseA中的操作,当A逻辑发生改变的时候,更加容易更新;

  相比于将SpecialWorksForCaseA提取到父类的CommonWorks的做法,缩减了父类的复杂性和规模,逻辑上成立。

  缺点在于:

  当A中的mTestArgs依赖于父类的mTestConfiguration时候,类CaseA的实例化需要增加复杂度。

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-09-15 18:44:48

搭建一个UT测试用例过程中关联和继承的选择的相关文章

浅析微博营销过程中内容的定位和选择

微博的火热催生了新的营销方式--微博营销,微博已经成为互联网重要的交流平台和营销阵地,作为企业的一个重要营销舞台,每个粉丝和听众的后面都是一个可能的潜在客户,这也对企业的微博营销提出了新的挑战.微博所具有极强的传播特性,各种营销公司.机构.个人从微博也开始研究如何让微博产生利益最大的手段.各种微博营销的方法技巧充斥整个互联网,微博营销成为了各种业界大会.聚会.研讨会讨论和研究的焦点.微博营销过程中所涉及的因素和可变参数还是很多的,主要包含内容.策划.团队.分析以及工具等等,研究微博营销需要从多方

域名选购过程中一般会存在哪些陷阱呢?

做互联网的经常接触域名,注册域名.管理域名.抢注域名.买域名.卖域名,每一个动作的背后都有着利益的交换,抑或是一个新网站的诞生.域名这个行业有规则,但是也有潜规则,今天就和大家聊一聊域名行业的那些陷阱. 这在域名业内已经不是什么秘密,很多http://www.aliyun.com/zixun/aggregation/37947.html">域名代理商其中不乏知名域名注册商,都会把客户的域名查询记录记录下来,然后选择品相不错的进行注册. 这种做法第一剽窃了用户的创造成果:第二在未经用户许可的

mongodb副本集搭建过程中的问题和解决技巧

在我以往的认知中,一个系统一旦正式上线,多半不会轻易的迁移服务器,尤其是那种涉及到多个关联应用,涉及到多台硬件服务器的系统,因为这种迁移将是牵一发而动全身的. 但是,却仍然有这种情况存在,就如我这几天主要负责的事,就是一个系统的全部服务器迁移中的部分机器迁移,还有一部分由别人负责. 这个系统涉及到flume数据采集,storm数据分析,rabbitmq消息分发,ehcache缓存提升系统性能,mongodb副本集存储数据,tomcat管理系统应用等,架构基本如下: 而这里我主要负责的是rabbi

无线网络搭建过程中的无线干扰问题

在无线网络搭建中,工程师们都会考虑无线信号的干扰问题.那么,本文就将为大家讲述20个关于无线干扰错误说法,让大家对无线干扰有一个正确的认识.那么,具体情况请看下文. 随着无线设备的普及以及对于移动应用要求的提高,企业必须勤于管理规划整个部署.而有些已投入使用的或者新兴的无线技术和常用电子设备却影响了无线网络的运行性能.其中RF干扰是最主要的影响无线网络运作的原因,它会影响安全性和无线网络的稳定性.本文罗列了关于无线干扰问题的20种最普遍的无线干扰错误说法. 无线干扰错误说法 #1: "唯一的干扰

使用wordpress搭建博客过程中遇到的一些问题

对于一个新手而言,第一次使用wordpress搭建个人博客,而且要在不同的环境上work,包括mac,ubuntu.再搭建的过程中遇到了很多的问题,通过一步步调试,逐步定位 问题所. 比如wordpress在上传图片的时候会自动生成缩略图,这个在mac上工作的很好,但是移植到ubuntu上的时候,缩略图生成不了了. 通过一步步添加日志的方法,逐步定位到是因为ubuntu上的php没有安装gd扩展. 下边提供一种定位的方法: 打印调用栈:在你的代码中调用这段代码,就能看到完整的调用栈.这对你整理程

Hadoop-2.8.0集群搭建、hadoop源码编译和安装、host配置、ssh免密登录、hadoop配置文件中的参数配置参数总结、hadoop集群测试,安装过程中的常见错误

25.集群搭建 25.1 HADOOP集群搭建 25.1.1集群简介 HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起 HDFS集群: 负责海量数据的存储,集群中的角色主要有NameNode / DataNode YARN集群: 负责海量数据运算时的资源调度,集群中的角色主要有 ResourceManager /NodeManager 25.1.2服务器准备 本案例使用虚拟机服务器来搭建HADOOP集群,所用软件及版本: ü Vmware 11.

hadoop-Hadoop2.2.0搭建过程中namenode初始化报错

问题描述 Hadoop2.2.0搭建过程中namenode初始化报错 HDFS初始化namenode报错,求大神帮帮忙!!! FATAL namenode.NameNode: Exception in namenode join java.lang.ClassCastException: com.sun.org.apache.xerces.internal.dom.DeferredElementNSImpl cannot be cast to org.w3c.dom.Text at org.ap

android-Android开发问题,安卓环境搭建完成后,调试过程中eclipse报错的问题

问题描述 Android开发问题,安卓环境搭建完成后,调试过程中eclipse报错的问题 安卓环境搭建 eclipse报 The connection to adb is down and a severe error has occured.You must restart adb and Eclipse.Please ensure that adb is correctly located at 'D:shithashadt-bundle-windows-x86_64-20140321sdk

《精通Android 实例开发》——第1章,第1.13节搭建过程中的常见错误

1.13 搭建过程中的常见错误 1.13.1 实例说明 无论安装或搭建任何一个开发环境,都会不可避免地遇到一些意想不到的问题,这些问题可能是我们粗心造成的,也可能是使用系统环境的差异造成的.在下面的实例中,将简单介绍搭建Android开发环境中常见问题的解决方法. 1.13.2 最常见的3个错误 1.Android不能在线更新 在安装Android后,需要更新为最新的资源和配置.但是在启动Android后,经常能更新,弹出如图1-65所示的错误信息. Android默认的在线更新地址是https