提高代码可测试性的方法、系统、可读存储介质及服务器技术方案

技术编号:17109431 阅读:18 留言:0更新日期:2018-01-24 22:23
本发明专利技术公开了一种提高代码可测试性的方法,包括对类B的所有方法进行封装得到代理类,将代理类增加到类A的代码中,并将代理类的每个方法声明为虚拟virtual,其中,类A依赖于类B;将类A中依赖于类B的代码修改为依赖于代理类;使用虚拟类继承代理类,以便类A通过虚拟类进行单元测试。本发明专利技术在提高了类A的代码可测试性的同时,降低了类A和类B之间的耦合性,也降低了对软件后期进行拓展和维护的难度。本发明专利技术还公开了一种提高代码可测试性的系统、可读存储介质及服务器,具有上述有益效果。

Ways to improve code testability, systems, readable storage media, and servers

【技术实现步骤摘要】
提高代码可测试性的方法、系统、可读存储介质及服务器
本专利技术涉及软件测试
,特别是涉及一种提高代码可测试性的方法、系统、可读存储介质及服务器。
技术介绍
随着软件工程的不断发展,一个软件,甚至软件中的一个模块都需要成百上千个类相互协作才能完成最终的功能。为了保证每个类的代码均可以实现其自身的逻辑,需要对每个类的代码进行单元测试,单元测试的结果要符合预期的返回值,若不符合,则说明代码编写有错误,以提醒程序员及时对错误的代码进行修改,避免软件的整个程序出现问题,无法运行。但是各个类之间存在依赖关系,例如某一模块中的类A依赖于另一模块中的类B,即类B所属的模块为不可修改的第三方库,类B不可控,因此类B向类A返回的结果是不确定的、未知的,类A的可测试性难以保障,进而导致对软件后期进行拓展和维护的难度大。因此如何提供一种解决上述技术问题的方案,是本领域技术人员目前需要解决的问题。
技术实现思路
本专利技术的目的是提供一种提高代码可测试性的方法,在提高了类A的代码可测试性的同时,降低了类A和类B之间的耦合性,也降低了对软件后期进行拓展和维护的难度;本专利技术的另一目的是提供一种提高代码可测试性的系统、可读存储介质及服务器。为解决上述技术问题,本专利技术提供了一种提高代码可测试性的方法,包括:对类B的所有方法进行封装得到代理类,将所述代理类增加到类A的代码中,并将所述代理类的每个方法声明为虚拟virtual,其中,所述类A依赖于所述类B;将所述类A中依赖于所述类B的代码修改为依赖于所述代理类;使用虚拟类继承所述代理类,以便所述类A通过所述虚拟类进行单元测试。优选的,所述类A通过所述虚拟类进行单元测试之后,该方法还包括:检验所述类A的单元测试结果是否符合预期的返回值;若否,则判定所述类A的代码编写有误。优选的,所述代理类为Proxy类。优选的,所述虚拟类为Mock类。为解决上述技术问题,本专利技术还提供了一种提高代码可测试性的系统,包括:封装模块,用于对类B的所有方法进行封装得到代理类,将所述代理类增加到类A的代码中,并将所述代理类的每个方法声明为虚拟virtual,其中,所述类A依赖于所述类B;修改模块,用于将所述类A中依赖于所述类B的代码修改为依赖于所述代理类;测试模块,用于使用虚拟类继承所述代理类,以便所述类A通过所述虚拟类进行单元测试。优选的,所述类A通过所述虚拟类进行单元测试之后,该系统还包括检测模块,用于检验所述类A的单元测试结果是否符合预期的返回值;若否,则判定所述类A的代码编写有误。优选的,所述代理类为Proxy类。优选的,所述虚拟类为Mock类。为解决上述技术问题,本专利技术还提供了一种可读存储介质,应用于计算机,其上存储有计算机程序,所述计算机程序执行时实现如上述任意一项所述的方法。为解决上述技术问题,本专利技术还提供了一种服务器,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时,实现如上述任意一项所述的方法。本专利技术提供了一种提高代码可测试性的方法,包括对类B的所有方法进行封装得到代理类,将代理类增加到类A的代码中,并将代理类的每个方法声明为虚拟virtual,其中,类A依赖于类B;将类A中依赖于类B的代码修改为依赖于代理类;使用虚拟类继承代理类,以便类A通过虚拟类进行单元测试。可见,在实际应用中,在类A和类B之间增加代理类,使得类A不直接依赖于类B,且代理类可控,继承了代理类的虚拟类可以修改,使类A可以返回确定的值,所以类A通过虚拟类就可以进行单元测试,在提高了类A的代码可测试性的同时,降低了类A和类B之间的耦合性,也降低了对软件后期进行拓展和维护的难度。本专利技术还提供了一种提高代码可测试性的系统、可读存储介质及服务器,具有和上述方法相同的有益效果。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术所提供的一种提高代码可测试性方法的流程图;图2为本专利技术所提供的一种提高代码可测试性系统的结构示意图。具体实施方式本专利技术的核心是提供一种提高代码可测试性的方法,在提高了类A的代码可测试性的同时,降低了类A和类B之间的耦合性,也降低了对软件后期进行拓展和维护的难度;本专利技术的另一核心是提供一种提高代码可测试性的系统、可读存储介质及服务器。为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。请参照图1,图1为本专利技术所提供的一种提高代码可测试性方法的流程图,包括:步骤1:对类B的所有方法进行封装得到代理类,将代理类增加到类A的代码中,并将代理类的每个方法声明为虚拟virtual,其中,类A依赖于类B;具体的,在实际应用中,类A和类B之间的依赖可以分为模块外和模块内,当类A和类B属于模块内的依赖时,想对类A的代码进行单元测试,可以采取接口提取和virtualandoverride等方法对类B的代码进行修改,使类B向类A返回确定的结果,以此来提高类A的代码可测试性;当类A和类B属于模块外的依赖时,即类A的代码依赖的是第三方库,类B不可控,此时想对类A的代码进行单元测试,通过类B向类A返回的值是未知的、不确定的,使得类A的代码的可测试性较低,所以本专利技术采用了在类A和类B之间增加一代理类的方案,使类A不直接依赖于类B,从而提高了类A的代码可测试性。具体的,代理类可以调用类B中的所有方法,同时代理类提供与类B相同的接口,以便代理类在任何时候都能代替类B,也可以说代理类是对类B的所有方法进行封装所得到的,将代理类添加到类A的代码中,此时代理类可控,在编译时将代理类所有的方法前面加上virtual关键字,以便代理类可以被其派生类继承,为提高类A的可测试性提供了基础。步骤2:将类A中依赖于类B的代码修改为依赖于代理类;具体的,将类A的代码修改为依赖于代理类,在提高类A的代码可测试性的同时,对耦合性较强的类A和类B进行了解耦,打破了类A和类B之间的依赖关系,进而提高了类A的代码可测试性,且采用本专利技术的方案不需要对类A的代码进行较大的变更。步骤3:使用虚拟类继承代理类,以便类A通过虚拟类进行单元测试。具体的,在测试环境中,使用可控的虚拟类继承代理类,则虚拟类可以看作代理类的一个派生类,在真实产品中使用类B,而在测试环境中使用虚拟类,由于虚拟类可修改,在对类A进行单元测试时,虚拟类可以向类A返回我们制定的结果,从而提高了类A的代码可测试性。本专利技术提供了一种提高代码可测试性的方法,包括对类B的所有方法进行封装得到代理类,将代理类增加到类A的代码中,并将代理类的每个方法声明为虚拟virtual,其中,类A依赖于类B;将类A中依赖于类B的代码修改为依赖于代理类;使用虚拟类继承代理类,以便类A通过虚拟类进行单元测试。可见,在实际应用中,在类A和类B之间增加本文档来自技高网...
提高代码可测试性的方法、系统、可读存储介质及服务器

【技术保护点】
一种提高代码可测试性的方法,其特征在于,包括:对类B的所有方法进行封装得到代理类,将所述代理类增加到类A的代码中,并将所述代理类的每个方法声明为虚拟virtual,其中,所述类A依赖于所述类B;将所述类A中依赖于所述类B的代码修改为依赖于所述代理类;使用虚拟类继承所述代理类,以便所述类A通过所述虚拟类进行单元测试。

【技术特征摘要】
1.一种提高代码可测试性的方法,其特征在于,包括:对类B的所有方法进行封装得到代理类,将所述代理类增加到类A的代码中,并将所述代理类的每个方法声明为虚拟virtual,其中,所述类A依赖于所述类B;将所述类A中依赖于所述类B的代码修改为依赖于所述代理类;使用虚拟类继承所述代理类,以便所述类A通过所述虚拟类进行单元测试。2.根据权利要求1所述的方法,其特征在于,所述类A通过所述虚拟类进行单元测试之后,该方法还包括:检验所述类A的单元测试结果是否符合预期的返回值;若否,则判定所述类A的代码编写有误。3.根据权利要求1或2任意一项所述的方法,其特征在于,所述代理类为Proxy类。4.根据权利要求3所述的方法,其特征在于,所述虚拟类为Mock类。5.一种提高代码可测试性的系统,其特征在于,包括:封装模块,用于对类B的所有方法进行封装得到代理类,将所述代理类增加到类A的代码中,并将所述代理类的每个方法声明为虚拟vir...

【专利技术属性】
技术研发人员:高四辈
申请(专利权)人:郑州云海信息技术有限公司
类型:发明
国别省市:河南,41

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1