CN102855178A - 一种单元测试中生成Mock库的方法和装置 - Google Patents

一种单元测试中生成Mock库的方法和装置 Download PDF

Info

Publication number
CN102855178A
CN102855178A CN201110181398XA CN201110181398A CN102855178A CN 102855178 A CN102855178 A CN 102855178A CN 201110181398X A CN201110181398X A CN 201110181398XA CN 201110181398 A CN201110181398 A CN 201110181398A CN 102855178 A CN102855178 A CN 102855178A
Authority
CN
China
Prior art keywords
mock
class
primitive
generates
parameter
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201110181398XA
Other languages
English (en)
Other versions
CN102855178B (zh
Inventor
冯照临
刘中胜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced New Technologies Co Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201110181398.XA priority Critical patent/CN102855178B/zh
Publication of CN102855178A publication Critical patent/CN102855178A/zh
Priority to HK13102902.8A priority patent/HK1175561A1/zh
Application granted granted Critical
Publication of CN102855178B publication Critical patent/CN102855178B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本申请提供了一种单元测试中生成Mock库的方法、装置和系统,所述方法包括:获取待测试源代码的各个需要被Mock的原始类;通过反射获得所述各个原始类的类参数,所述类参数包括:方法名称、参数类型和返回值类型;依据所述类参数生成所述原始类对应的各个Mock类;将所述各个Mock类组成的集合作为Mock库。本申请实施例实现Mock的自动生成,从而节省了大量的人力物力成本。尤其是在对代码质量要求较高的情况下,就可以大大提高Mock库的形成效率,不仅如此,也提高了可靠性。

Description

一种单元测试中生成Mock库的方法和装置
技术领域
本申请涉及软件测试领域,特别涉及一种单元测试中生成Mock库的方法和装置。
背景技术
单元测试是在软件开发过程中要进行的最低级别的测试活动,在单元测试过程中,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。因此,单元测试不仅仅是作为无错编码的一种辅助手段应用于一次性的开发过程,单元测试也必须是可重复的,无论是在软件修改过程中,还是移植到新的运行环境之后。而在单元测试过程中,对于某些不容易构造或者不容易获取的对象,可以采用创建一个虚拟的对象来进行测试的方式,这个虚拟的对象就称为Mock对象。Mock对象就是实际中的对象在单元测试期间的代替品。
Mock对象是Mock类的实例化,在现有技术中,单元测试中Mock类的代码编写,主要依赖于人工,所有的Mock类的代码编写完毕,就组成了Mock库。
但是这种人工编写代码的效率很低,尤其是在对代码质量要求较高的情况下,就会使得Mock库的形成效率非常低下,浪费了大量的人力物力资源。不仅如此,人工编写代码的可靠性也较低,同时还会使得用于单元测试的程序代码的可维护性较差。
总之,目前需要本领域技术人员迫切解决的一个技术问题就是:如何能够创新的提出一种单元测试中生成Mock库的方法,以解决现有技术中Mock库的可靠性较低以及可维护性较差的问题。
发明内容
本申请所要解决的技术问题是提供一种单元测试中生成Mock库的方法,用以解决现有技术中Mock库的可靠性较低以及可维护性较差的问题,以及可以提升生成Mock库的效率。
本申请还提供了一种单元测试中生成Mock库的装置,用以保证上述方法在实际中的实现及应用。
为了解决上述问题,本申请公开了一种单元测试中生成Mock库的方法,包括:
获取待测试源代码的各个需要被Mock的原始类;
通过反射获得所述各个原始类的类参数,所述类参数包括:方法名称、参数类型和返回值类型;
依据所述类参数生成所述原始类对应的各个Mock类;
将所述各个Mock类组成的集合作为Mock库。
优选的,所述依据所述类参数生成所述原始类对应的一个Mock类,包括:
根据所述原始类的类参数生成所述Mock类的类头;
将所述原始类包括的各个原始方法封装成方法对象类;
将所述方法对象类按照所述返回值类型分为若干个组;
按照所述若干个组对应生成若干个集合,以过滤重复的原始方法;
对应所述集合中各个组生成所述Mock类的各个Mock方法;所述Mock方法的个数与所述组的个数相同;
依据所述类头和各个Mock方法生成一个Mock类。
优选的,对应一个组生成所述述Mock类的一个Mock方法,包括:
依据原始类的类名称和返回值类型生成Mock方法头;
判断被Mock的原始类是否为接口,如果否,则在Mock方法体中声明所述Mock的原始类不是接口;并执行生成Mock方法体的流程,所述生成Mock方法体的流程包括:针对所述集合中的一个组,创建原始类的一个实例,并对应于所述一个组中的各个原始方法生成各个Mock方法;返回所述创建的原始实例;
如果是,则直接执行所述生成Mock方法体的流程。
优选的,在所述Mock方法需要抛出异常时,执行抛出异常的流程。
优选的,还包括:
依据所述Mock库进行单元测试。
本申请公开了一种单元测试中生成Mock库的装置,包括:
获取原始类模块,用于获取待测试源代码的各个需要被Mock的原始类;
获得类参数模块,用于通过反射获得所述各个原始类的类参数,所述类参数包括:方法名称、参数类型和返回值类型;
生成模块,用于依据所述类参数生成所述原始类对应的各个Mock类;
组合模块,用于将所述各个Mock类组成的集合作为Mock库。
优选的,所述生成模块,包括:
第一生成子模块,用于根据所述原始类的类参数生成所述Mock类的类头;
封装子模块,用于将所述原始类包括的各个原始方法封装成方法对象类;
划分子模块,用于将所述方法对象类按照所述返回值类型分为若干个组;
过滤子模块,用于按照所述若干个组对应生成若干个集合,以过滤重复的原始方法;
第二生成子模块,用于对应所述集合中各个组生成所述Mock类的各个Mock方法;所述Mock方法的个数与所述组的个数相同;
第三生成子模块,用于依据所述类头和各个Mock方法生成一个Mock类。
优选的,所述第二生成子模块,具体配置为:
第四生成子模块,用于依据原始类的类名称和返回值类型生成Mock方法头;
判断模块,用于判断被Mock的原始类是否为接口;
声明子模块,用于在所述判断模块的结果为否时,在Mock方法体中声明所述Mock的原始类不是接口,并触发执行流程子模块;
执行流程子模块,用于在所述判断模块的结果为是时,执行生成Mock方法体的流程,所述生成Mock方法体的流程包括:针对所述集合中的一个组,创建原始类的一个实例,并对应于所述一个组中的各个原始方法生成各个Mock方法;返回所述创建的原始实例。
优选的,还包括:
抛出模块,用于在所述Mock方法需要抛出异常时,执行抛出异常的流程。
优选的,还包括:
测试模块,用于依据所述Mock库进行单元测试。
与现有技术相比,本申请包括以下优点:
在本申请中,可以通过反射原始类,以及通过对类是否为接口的判断,可以实现Mock库的自动生成,依据反射得到的类参数就可以无需人工编写代码实现Mock的自动生成,从而节省了大量的人力物力成本。尤其是在对代码质量要求较高的情况下,就可以大大提高Mock库的形成效率,不仅如此,也提高了可靠性,同时还会使得用于单元测试的程序代码的可维护性较好。进一步的,利用生成的Mock库进行单元测试还能提高单元测试的效率。当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请的一种单元测试中生成Mock库的方法实施例1的流程图;
图2是在方法实施例1中步骤103的流程图;
图3是在方法实施例1中步骤205的流程图;
图4是本申请的一种单元测试中生成Mock库的方法实施例2的流程图;
图5是本申请的一种单元测试中生成Mock库的装置实施例1的结构框图;
图6是本申请装置实施例1中生成模块503的结构框图;
图7是本申请装置实施例1中第二生成子模块605的结构框图;
图8是本申请的一种单元测试中生成Mock库的装置实施例2的结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请可用于众多通用或专用的计算装置环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器装置、包括以上任何装置或设备的分布式计算环境等等。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本申请的主要思想之一可以包括,通过反射原始类,以及通过对原始类是否为接口的判断,可以在原始类分别为接口或者不为接口的情况下进行不同的处理方式,从而实现Mock库的自动生成,依据反射得到的类参数就可以无需人工编写代码实现Mock的自动生成,也能够节省大量的人力物力成本。这里的反射指的是可以在不对一个类进行分析的前提下,可以直接获得类名称、类的方法返回值、方法名、成员变量名或者成员变量类型等参数,而所述原始类即是需要被Mock的类,为了与Mock类进行区分,在本申请实施例中将需要被Mock的类称为原始类。尤其是在对代码质量要求较高的情况下,就可以大大提高Mock库的形成效率,不仅如此,也提高了可靠性,同时还会使得用于单元测试的程序代码的可维护性较好。
参考图1,示出了本申请一种单元测试中生成Mock库的方法实施例1的流程图,可以包括以下步骤:
步骤101:获取待测试源代码的各个需要被Mock的原始类。
因为Mock库是由很多的Mock类组成的,所以在本申请实施例中,需要先由原始类生成Mock类。首先在本步骤中获取待测试源代码的各个需要被Mock的原始类。
步骤102:通过反射获得所述各个原始类的类参数,所述类参数包括:方法名称、参数类型和返回值类型。
在本步骤中就需要对各个原始类进行反射,通过反射需要被Mock的类,可以得到原始类所引用的类的类参数,包括引用的类中包括的各个方法的方法名称,参数类型和返回值类型,例如方法参数是整型(int)还是字符串型(string)等,或者返回值类型是int还是string。
步骤103:依据所述类参数生成所述原始类对应的各个Mock类。
依据原始类所引用的类的类参数,生成与原始类对应的各个Mock类。因为Mock类需要用到原始类所引用的类,所以需要根据步骤102中通过反射得到的类参数来生成各个Mock类。
具体的,在生成Mock类的过程中,参考图2所示,可以包括以下步骤:
步骤201:根据所述原始类的类参数生成所述Mock类的类头。
首先将获取到的类参数在所述Mock类的类头中声明。即是在类头中声明原始类都引用了哪些类。
步骤202:将所述原始类包括的各个原始方法封装成方法对象类。
生成类头之后,再将原始类所包括的各个原始方法封装成方法对象(Methodobject)类,即是将各个原始方法重新封装成Mock类中的方法对象,可以组成一个列表。
步骤203:将所述方法对象类按照所述返回值类型分为若干个组。
把MethodObject类按照不同的返回值类型进行分成n个组,例如,返回值类型为int的方法对象类分为一个组。
步骤204:按照所述若干个组对应生成若干个集合,以过滤重复的原始方法。
再以组为单位把前述的方法对象类放到一个新的集合(Set)中,并对其进行去重处理。具体可以采用把方法名称放进Set中进行去重处理,因为Set是不允许有重复的。
分组后Set中的示意可以参考表1所示:
表1
Figure BDA0000072668130000071
其中的一组是Set中的一个元素,例如表2所示:
表2
Figure BDA0000072668130000072
步骤205:对应所述集合中各个组生成所述Mock类的各个Mock方法;所述Mock方法的个数与所述组的个数相同。
在本步骤中则遍历这个Set,其中的每个组对应生成一个Mock类的Mock方法。例如,原始类为A,而生成的Mock类为D,假设A中有两组方法,第一组包括方法a和方法b,第二组只有方法c,则对应第一组的方法a和方法b会生成一个Mock方法,而对应第二组的方法c也会生成一个Mock方法,一共有两个Mock方法。
其中,参考图3所示,对应一个组生成所述Mock类的一个Mock方法,具体可以包括:
步骤301:依据原始类的类名称和返回值类型生成Mock方法头。
在方法头部分,需要声明原始类,以及方法的返回值类型,例如,在Mock类D中的方法头中需要声明原始类的类名称“A”。同时,在方法头部分还需要标注该方法为Mock方法,例如,可以采用“Mock”字样来表示该方法是一个Mock方法。
步骤302:判断被Mock的原始类是否为接口,如果否,则执行步骤303,如果是,则进入步骤304。
根据类的属性可以很容易的得知一个原始类是接口还是实现类,如果是接口的话,则进入步骤304,如果不是的话,则执行步骤303。
步骤303:在Mock方法体中声明所述Mock的原始类不是接口,进入步骤304。
本步骤需要在Mock方法体中声明所述Mock的原始类不是接口,与判断结果为是的情况相比,在判断结果为否的情况下,仅仅多了一个需要声明所述Mock的原始类不是接口的步骤,接着仍需进入步骤304。具体的可以通过JMock框架来实现。JMock是一个用Mock对象支持java代码的测试驱动开发的库,是Java中主要的Mock测试工具之一。
步骤304:执行生成Mock方法体的流程,所述生成Mock方法体的流程包括:针对所述集合中的一个组,创建原始类的一个实例,并对应于所述一个组中的各个原始方法生成各个Mock方法;返回所述创建的原始实例。
在本步骤中即是生成Mock方法体的过程,具体的,针对集合中的任意一个组,例如第一组,先创建原始类的一个实例,并接着对应该第一组中的各个原始方法都生成对应的一个Mock方法,当该第一组中的所有原始方法都对应模拟完毕之后,则返回所述创建的原始类的实例,表示第一组的方法已经全部生成了对应的Mock方法体。最终方法头和方法体部分组成完整的Mock方法。
步骤206:依据所述类头和各个Mock方法生成一个Mock类。
需要说明的是,在前述生成了类头以及类中所包括的Mock方法之后,还有一些格式上固定的内容,并将前述类头、Mock方法以及固定格式的类尾写入文件中,就生成了一个Mock类。
步骤104:将所述各个Mock类组成的集合作为Mock库。
最后再将生成的所有的Mock类的集合作为最终的Mock库。
采用本申请实施例,可以通过反射原始类,以及通过对类是否为接口的判断,可以实现Mock库的自动生成,依据反射得到的类参数就可以无需人工编写代码实现Mock的自动生成,从而节省了大量的人力物力成本。尤其是在对代码质量要求较高的情况下,就可以大大提高Mock库的形成效率,不仅如此,也提高了可靠性,同时还会使得用于单元测试的程序代码的可维护性较好。
进一步的,参考图4所示,示出了本申请一种单元测试中生成Mock库的方法实施例2的流程图,在本实施例2中在所述步骤104之后,还需要包括如下步骤:
步骤401:在所述Mock方法需要抛出异常时,执行抛出异常的流程。
需要说明的是,Mock方法是否需要抛出异常可以根据实际情况进行设置,可以通过在Mock方法的方法头中采用“true”或“false”来表示,当Mock方法的方法头中包括“true”时,就表示Mock方法需要抛出异常,当Mock方法的方法头中包括“false”时,就表示Mock方法不需要抛出异常。
这里的抛出异常,指的是在一个方法的执行过程中,对某些异常情况或者出现问题所做出的提示。例如,某个方法的执行需要读取一个文件,而在运行该方法时却发现文件不存在,此时就需要抛出异常。
进一步的,所述方法还可以包括:
步骤402:依据所述Mock库进行单元测试。
依据生成的Mock库对被测程序代码进行单元测试。
在本实施例中,还可以在方法需要抛出异常时,执行抛出异常的流程,满足了实际中的不同需求,同时基于本申请实施例生成的Mock库进行单元测试,也能够提高单元测试的效率。
对于前述的方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
与上述本申请一种单元测试中生成Mock库的方法实施例1所提供的方法相对应,参见图5,本申请还提供了一种单元测试中生成Mock库的装置实施例1,在本实施例中,该装置可以包括:
获取原始类模块501,用于获取待测试源代码的各个需要被Mock的原始类。
获得类参数模块502,用于通过反射获得所述各个原始类的类参数,所述类参数包括:方法名称、参数类型和返回值类型。
生成模块503,用于依据所述类参数生成所述原始类对应的各个Mock类。
参考图6所示,所述生成模块503,具体可以包括:
第一生成子模块601,用于根据所述原始类的类参数生成所述Mock类的类头。
封装子模块602,用于将所述原始类包括的各个原始方法封装成方法对象类。
划分子模块603,用于将所述方法对象类按照所述返回值类型分为若干个组。
过滤子模块604,用于按照所述若干个组对应生成若干个集合,以过滤重复的原始方法。
第二生成子模块605,用于对应所述集合中各个组生成所述Mock类的各个Mock方法;所述Mock方法的个数与所述组的个数相同。
其中,参考图7所示,所述第二生成子模块605,具体可以配置为:
第四生成子模块701,用于依据原始类的类名称和返回值类型生成Mock方法头;
判断模块702,用于判断被Mock的原始类是否为接口;
声明子模块703,用于在所述判断模块的结果为否时,在Mock方法体中声明所述Mock的原始类不是接口,并触发执行流程子模块;
执行流程子模块704,用于在所述判断模块的结果为是时,执行生成Mock方法体的流程,所述生成Mock方法体的流程包括:针对所述集合中的一个组,创建原始类的一个实例,并对应于所述一个组中的各个原始方法生成各个Mock方法;返回所述创建的原始实例。
第三生成子模块606,用于依据所述类头和各个Mock方法生成一个Mock类。
组合模块504,用于将所述各个Mock类组成的集合作为Mock库。
采用本申请实施例,可以通过反射原始类,以及通过对类是否为接口的判断,可以实现Mock库的自动生成,依据反射得到的类参数就可以无需人工编写代码实现Mock的自动生成,从而节省了大量的人力物力成本。尤其是在对代码质量要求较高的情况下,就可以大大提高Mock库的形成效率,不仅如此,也提高了可靠性,同时还会使得用于单元测试的程序代码的可维护性较好。
与上述本申请一种单元测试中生成Mock库的方法实施例1所提供的方法相对应,参见图8,本申请还提供了一种单元测试中生成Mock库的装置实施例2,在本实施例中,该装置还需要包括:
抛出模块801,用于在所述Mock方法需要抛出异常时,执行抛出异常的流程。
以及,测试模块802,用于依据所述Mock库进行单元测试。
在本实施例中,还可以在方法需要抛出异常时,执行抛出异常的流程,满足了实际中的不同需求,同时基于本申请实施例生成的Mock库进行单元测试,也能够提高单元测试的效率。
本实施例所述的装置可以集成到第三方交易平台的服务器上,也可以单独作为一个实体与第三方交易平台的服务器相连,另外,需要说明的是,当本申请所述的方法采用软件实现时,可以作为第三方交易平台的服务器新增的一个功能,也可以单独编写相应的程序,本申请不限定所述方法或装置的实现方式。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请所提供的一种单元测试中生成Mock库的方法及装置进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种单元测试中生成Mock库的方法,其特征在于,包括:
获取待测试源代码的各个需要被Mock的原始类;
通过反射获得所述各个原始类的类参数,所述类参数包括:方法名称、参数类型和返回值类型;
依据所述类参数生成所述原始类对应的各个Mock类;
将所述各个Mock类组成的集合作为Mock库。
2.根据权利要求1所述的方法,其特征在于,所述依据所述类参数生成所述原始类对应的一个Mock类,包括:
根据所述原始类的类参数生成所述Mock类的类头;
将所述原始类包括的各个原始方法封装成方法对象类;
将所述方法对象类按照所述返回值类型分为若干个组;
按照所述若干个组对应生成若干个集合,以过滤重复的原始方法;
对应所述集合中各个组生成所述Mock类的各个Mock方法;所述Mock方法的个数与所述组的个数相同;
依据所述类头和各个Mock方法生成一个Mock类。
3.根据权利要求2所述的方法,其特征在于,对应一个组生成所述述Mock类的一个Mock方法,包括:
依据原始类的类名称和返回值类型生成Mock方法头;
判断被Mock的原始类是否为接口,如果否,则在Mock方法体中声明所述Mock的原始类不是接口;并执行生成Mock方法体的流程,所述生成Mock方法体的流程包括:针对所述集合中的一个组,创建原始类的一个实例,并对应于所述一个组中的各个原始方法生成各个Mock方法;返回所述创建的原始实例;
如果是,则直接执行所述生成Mock方法体的流程。
4.根据权利要求1所述的方法,其特征在于,在所述Mock方法需要抛出异常时,执行抛出异常的流程。
5.根据权利要求1所述的方法,其特征在于,还包括:
依据所述Mock库进行单元测试。
6.一种单元测试中生成Mock库的装置,其特征在于,该装置包括:
获取原始类模块,用于获取待测试源代码的各个需要被Mock的原始类;
获得类参数模块,用于通过反射获得所述各个原始类的类参数,所述类参数包括:方法名称、参数类型和返回值类型;
生成模块,用于依据所述类参数生成所述原始类对应的各个Mock类;
组合模块,用于将所述各个Mock类组成的集合作为Mock库。
7.根据权利要求6所述的装置,其特征在于,所述生成模块,包括:
第一生成子模块,用于根据所述原始类的类参数生成所述Mock类的类头;
封装子模块,用于将所述原始类包括的各个原始方法封装成方法对象类;
划分子模块,用于将所述方法对象类按照所述返回值类型分为若干个组;
过滤子模块,用于按照所述若干个组对应生成若干个集合,以过滤重复的原始方法;
第二生成子模块,用于对应所述集合中各个组生成所述Mock类的各个Mock方法;所述Mock方法的个数与所述组的个数相同;
第三生成子模块,用于依据所述类头和各个Mock方法生成一个Mock类。
8.根据权利要求7所述的装置,其特征在于,所述第二生成子模块,具体配置为:
第四生成子模块,用于依据原始类的类名称和返回值类型生成Mock方法头;
判断模块,用于判断被Mock的原始类是否为接口;
声明子模块,用于在所述判断模块的结果为否时,在Mock方法体中声明所述Mock的原始类不是接口,并触发执行流程子模块;
执行流程子模块,用于在所述判断模块的结果为是时,执行生成Mock方法体的流程,所述生成Mock方法体的流程包括:针对所述集合中的一个组,创建原始类的一个实例,并对应于所述一个组中的各个原始方法生成各个Mock方法;返回所述创建的原始实例。
9.根据权利要求6所述的装置,其特征在于,还包括:
抛出模块,用于在所述Mock方法需要抛出异常时,执行抛出异常的流程。
10.根据权利要求6所述的装置,其特征在于,还包括:
测试模块,用于依据所述Mock库进行单元测试。
CN201110181398.XA 2011-06-30 2011-06-30 一种单元测试中生成Mock库的方法和装置 Expired - Fee Related CN102855178B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201110181398.XA CN102855178B (zh) 2011-06-30 2011-06-30 一种单元测试中生成Mock库的方法和装置
HK13102902.8A HK1175561A1 (zh) 2011-06-30 2013-03-08 種單元測試中生成 庫的方法和裝置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110181398.XA CN102855178B (zh) 2011-06-30 2011-06-30 一种单元测试中生成Mock库的方法和装置

Publications (2)

Publication Number Publication Date
CN102855178A true CN102855178A (zh) 2013-01-02
CN102855178B CN102855178B (zh) 2015-03-04

Family

ID=47401782

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110181398.XA Expired - Fee Related CN102855178B (zh) 2011-06-30 2011-06-30 一种单元测试中生成Mock库的方法和装置

Country Status (2)

Country Link
CN (1) CN102855178B (zh)
HK (1) HK1175561A1 (zh)

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104679648A (zh) * 2013-12-02 2015-06-03 中国银联股份有限公司 跨应用的自动化测试方法
CN105335281A (zh) * 2014-07-30 2016-02-17 阿里巴巴集团控股有限公司 一种自动mock外部依赖的方法及装置
CN106055481A (zh) * 2016-06-02 2016-10-26 腾讯科技(深圳)有限公司 计算机程序的测试方法及装置
WO2016201995A1 (zh) * 2015-06-16 2016-12-22 中兴通讯股份有限公司 实现构建测试对象的方法、装置及业务配置测试的装置
CN106874188A (zh) * 2016-12-30 2017-06-20 北京五八信息技术有限公司 软件接口测试方法及装置
CN107179984A (zh) * 2016-03-10 2017-09-19 北京京东尚科信息技术有限公司 一种接口mock方法及接口测试方法
CN107402854A (zh) * 2016-05-19 2017-11-28 中兴通讯股份有限公司 测试信息管理方法、装置、测试用例执行系统及设备
CN107621965A (zh) * 2017-09-20 2018-01-23 郑州云海信息技术有限公司 提高代码可测试性的方法、系统、可读存储介质及服务器
CN107659455A (zh) * 2017-10-16 2018-02-02 武汉斗鱼网络科技有限公司 一种iOS端Mock数据的方法、存储介质、设备及系统
CN107992425A (zh) * 2017-12-25 2018-05-04 携程旅游网络技术(上海)有限公司 单元测试Mock代码的自动生成方法及系统
CN108572911A (zh) * 2017-03-14 2018-09-25 北京京东尚科信息技术有限公司 自动化安全测试方法、装置、电子设备和可读存储介质
CN108804303A (zh) * 2017-05-05 2018-11-13 北京京东尚科信息技术有限公司 一种提供数据的方法和系统
CN109739526A (zh) * 2017-10-30 2019-05-10 北京京东尚科信息技术有限公司 代码更新方法和装置
CN110287039A (zh) * 2019-06-26 2019-09-27 网易无尾熊(杭州)科技有限公司 模拟接口配置方法、介质、装置和计算设备
CN110502224A (zh) * 2019-08-22 2019-11-26 深圳前海环融联易信息科技服务有限公司 基于http请求的接口模拟方法、装置和计算机设备
CN110874322A (zh) * 2018-09-04 2020-03-10 阿里巴巴集团控股有限公司 一种用于应用程序的测试方法及测试服务器
CN111966591A (zh) * 2020-08-10 2020-11-20 上海中通吉网络技术有限公司 dubbo服务测试方法、装置和设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070033442A1 (en) * 2005-08-04 2007-02-08 Microsoft Corporation Mock object generation by symbolic execution
CN101026503A (zh) * 2006-02-24 2007-08-29 国际商业机器公司 Web服务业务流程的单元测试的方法和设备
US20090007073A1 (en) * 2007-04-09 2009-01-01 International Business Machines Corporation Service testing method and service testing system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070033442A1 (en) * 2005-08-04 2007-02-08 Microsoft Corporation Mock object generation by symbolic execution
CN101026503A (zh) * 2006-02-24 2007-08-29 国际商业机器公司 Web服务业务流程的单元测试的方法和设备
US20090007073A1 (en) * 2007-04-09 2009-01-01 International Business Machines Corporation Service testing method and service testing system

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
伍向前: "《单元测试中mock技术的研究和创新》", 《中国优秀硕士学位论文全文数据库》, no. 4, 15 April 2010 (2010-04-15), pages 9 - 15 *

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104679648A (zh) * 2013-12-02 2015-06-03 中国银联股份有限公司 跨应用的自动化测试方法
CN105335281B (zh) * 2014-07-30 2018-03-20 阿里巴巴集团控股有限公司 一种自动mock外部依赖的方法及装置
CN105335281A (zh) * 2014-07-30 2016-02-17 阿里巴巴集团控股有限公司 一种自动mock外部依赖的方法及装置
CN106326088B (zh) * 2015-06-16 2021-03-23 中兴通讯股份有限公司 实现构建测试对象的方法、装置及业务配置测试的装置
WO2016201995A1 (zh) * 2015-06-16 2016-12-22 中兴通讯股份有限公司 实现构建测试对象的方法、装置及业务配置测试的装置
CN106326088A (zh) * 2015-06-16 2017-01-11 中兴通讯股份有限公司 实现构建测试对象的方法、装置及业务配置测试的装置
CN107179984A (zh) * 2016-03-10 2017-09-19 北京京东尚科信息技术有限公司 一种接口mock方法及接口测试方法
CN107402854A (zh) * 2016-05-19 2017-11-28 中兴通讯股份有限公司 测试信息管理方法、装置、测试用例执行系统及设备
CN106055481B (zh) * 2016-06-02 2020-03-27 腾讯科技(深圳)有限公司 计算机程序的测试方法及装置
CN106055481A (zh) * 2016-06-02 2016-10-26 腾讯科技(深圳)有限公司 计算机程序的测试方法及装置
CN106874188A (zh) * 2016-12-30 2017-06-20 北京五八信息技术有限公司 软件接口测试方法及装置
CN106874188B (zh) * 2016-12-30 2020-05-12 北京五八信息技术有限公司 软件接口测试方法及装置
CN108572911A (zh) * 2017-03-14 2018-09-25 北京京东尚科信息技术有限公司 自动化安全测试方法、装置、电子设备和可读存储介质
CN108804303A (zh) * 2017-05-05 2018-11-13 北京京东尚科信息技术有限公司 一种提供数据的方法和系统
CN108804303B (zh) * 2017-05-05 2022-04-12 北京京东尚科信息技术有限公司 一种提供数据的方法和系统
CN107621965A (zh) * 2017-09-20 2018-01-23 郑州云海信息技术有限公司 提高代码可测试性的方法、系统、可读存储介质及服务器
CN107659455A (zh) * 2017-10-16 2018-02-02 武汉斗鱼网络科技有限公司 一种iOS端Mock数据的方法、存储介质、设备及系统
CN109739526A (zh) * 2017-10-30 2019-05-10 北京京东尚科信息技术有限公司 代码更新方法和装置
CN107992425B (zh) * 2017-12-25 2020-09-22 携程旅游网络技术(上海)有限公司 单元测试Mock代码的自动生成方法及系统
CN107992425A (zh) * 2017-12-25 2018-05-04 携程旅游网络技术(上海)有限公司 单元测试Mock代码的自动生成方法及系统
CN110874322A (zh) * 2018-09-04 2020-03-10 阿里巴巴集团控股有限公司 一种用于应用程序的测试方法及测试服务器
CN110874322B (zh) * 2018-09-04 2023-05-26 阿里巴巴集团控股有限公司 一种用于应用程序的测试方法及测试服务器
CN110287039A (zh) * 2019-06-26 2019-09-27 网易无尾熊(杭州)科技有限公司 模拟接口配置方法、介质、装置和计算设备
CN110502224A (zh) * 2019-08-22 2019-11-26 深圳前海环融联易信息科技服务有限公司 基于http请求的接口模拟方法、装置和计算机设备
CN111966591A (zh) * 2020-08-10 2020-11-20 上海中通吉网络技术有限公司 dubbo服务测试方法、装置和设备

Also Published As

Publication number Publication date
HK1175561A1 (zh) 2013-07-05
CN102855178B (zh) 2015-03-04

Similar Documents

Publication Publication Date Title
CN102855178A (zh) 一种单元测试中生成Mock库的方法和装置
EP3433732B1 (en) Converting visual diagrams into code
CN102855177B (zh) 一种单元测试的方法和装置
CN107357593A (zh) 源代码文件组建方法、装置、电子终端及可读存储介质
CN107644286A (zh) 工作流处理方法及装置
CN102054217B (zh) 基于元模型的工具中的实体变形
CN102810057A (zh) 一种记录日志的方法
CN111428451B (zh) 文本在线编辑方法、装置、电子设备及存储介质
Console et al. Graphol: Ontology Representation through Diagrams.
CN106649110B (zh) 软件测试方法及系统
CN111176660A (zh) 一种面向分布式架构的微服务契约管理方法、装置、计算机设备、和可读存储介质
CN113360139A (zh) 前端框架的集成方法、装置、电子设备及存储介质
CN105573763A (zh) 一种支持rtos的嵌入式系统建模方法
CN104536897A (zh) 基于关键字的自动测试方法及系统
CN113687827B (zh) 基于微件的数据列表生成方法、装置、设备及存储介质
CN102004666A (zh) 一种大型计算机作业排程设备及系统
CN115757174A (zh) 一种数据库的差异检测方法及装置
CN113900956A (zh) 测试用例的生成方法、装置、计算机设备及存储介质
CN111553133B (zh) 报表生成方法、装置、电子设备及存储介质
CN106598680A (zh) 一种程序修复、内容推广的方法、装置及电子设备
CN106330556A (zh) 一种用于生成服务模块调用关联信息的方法与装置
Vogel mRUBiS: An exemplar for model-based architectural self-healing and self-optimization (artifact)
CN107784047A (zh) 存储过程的实现方法及装置
US20190250977A1 (en) Using telemetry to drive high impact accessibility issues
CN106844876B (zh) 数据处理方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1175561

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1175561

Country of ref document: HK

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20191219

Address after: P.O. Box 31119, grand exhibition hall, hibiscus street, 802 West Bay Road, Grand Cayman, British Cayman Islands

Patentee after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Islands Grand Cayman capital building, a four storey No. 847 mailbox

Patentee before: ALIBABA GROUP HOLDING Ltd.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150304