首页 专利交易 科技果 科技人才 科技服务 国际服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

一种基于Junit的单元测试方法及装置 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:中国建设银行股份有限公司

摘要:本申请公开了一种基于Junit的单元测试方法及装置,其中,方法为:利用预先设置的配置文件对用户指定的包进行解析,将解析所得的若干个单元测试类确定为目标单元测试类,在针对每一个目标单元测试类进行执行时,先判断是否存在Spring容器,若没有,则创建一个包括每一个目标单元测试类执行时所必须的Javabean注册信息的Spring容器。该Spring容器由于包括每一个目标单元测试类执行时所必须的Javabean注册信息,因此在执行每一个目标单元测试类时,无需重复建立Spring容器,也即不需要重复初始化Spring容器,大大提高了批量测试执行效率。

主权项:一种基于Junit的单元测试方法,其特征在于,包括:利用预先设置的配置文件对用户指定的包进行解析,将解析所得的若干个单元测试类确定为目标单元测试类;针对每一个所述目标单元测试类均进行下述处理过程,直至目标单元测试类的测试案例均被执行完毕:利用Junit线程调用所述目标单元测试类的每一个测试案例;利用预设的基础测试类检查当前环境有无Spring容器,若没有,则创建Spring容器,创建的所述Spring容器包括每一个所述目标单元测试类执行时所必须的Javabean注册信息;利用Junit线程调用并执行所述目标单元测试类的每一个测试案例;销毁所述Spring容器。

全文数据:一种基于Junit的单元测试方法及装置技术领域[0001]本申请涉软件处理技术领域,更具体地说,涉及一种基于Junit的单元测试方法及装置。背景技术[0002]单元测试是指对软件中的最小可测试单元进行检查和验证。一般现有技术使用Junit测试框架来进行测试。Junit是一套框架,继承一个测试用例就可以进行自动测试。多个测试用例组成一组测试用例,一组测试用例需要共同的测试运行环境才能够执行。[0003]一般情况下,集成测试需要启动Spring容器。Spring容器需要包括待执行单元测试类中测试方法所需的JavaBean的注册。但是,不同单元测试类的测试方法所需的JavaBean的注册不同,现有技术在执行一组单元测试类时,针对每一个单元测试类都要创建并销毁一次Spring容器,也即需要重复初始化Spring容器,从而严重影响批量测试执行效率。发明内容[0004]_有鉴于此,本申请提供了一种基于Junit的单元测试方法及装置,用于解决现有技术执行一组单元测试类时,针对每一个单元测试类均需要重复初始化Spring容器,从而影响批量测试执行效率的问题。[0005]为了实现上述目的,现提出的方案如下:[0006]—种基于Junit的单元测试方法,包括:[0007]利用预先设置的配置文件对用户指定的包进行解析,将解析所得的若干个单元测试类确定为目标单元测试类;[0008]针对每一个所述目标单元测试类均进行下述处理过程,直至目标单元测试类的测试案例均被执行完毕:[0009]利用Junit线程调用所述目标单元测试类的每一个测试案例;[0010]利用预设的基础测试类检查当前环境有无Spring容器,若没有,则创建Spring容器,创建的所述Spring容器包括每一个所述目标单元测试类执行时所必须的Javabean注册伯息;[0011]利用Junit线程调用并执行所述目标单元测试类的每一个测试案例;[0012]销毁所述Spring容器。[0013]优选地,所述利用junit线程调用并执行所述目标单元测试类的每一个测试案例,包括:[0014]利用Junit线程调用所述基础测试类中的第一预设方法,以完成单元测试的上下文环境的创建;[0015]利用Junit线程调用并执行所述目标单元测试类的任意一个测试案例;[0016]在检测到所述测试案例执行完毕后,销毁创建的上文下文环境,并返回至所述利用Junit线程调用所述基础测试类中的第一预设方法,以完成单元测试的上下文环境的创建的步骤,直至所述目标单元测试类的每一个测试案例均被执行完毕。[0017]优选地,创建的所述Spring容器还包括用于进行效率分析的切面拦截,则在所述利用Junit线程调用并执行所述目标单元测试类的每一个测试案例的同时,所述切面拦截会根据每一个测试案例执行的被测方法的包名、类名和方法名,对被测方法进行类别区分,并记录执行被测方法所消耗的时间。[0018]优选地,还包括:[0019]利用所述切面拦截记录的数据,生成测试报告。[0020]优选地,所述利用所述切面拦截记录的数据,生成测试报告的过程为:[0021]利用Apache的poi项目操作Excel表单,将所述切面拦截记录的数据填充至预先设置的模板中,以生成测试报告。[0022]—种基于Junit的单元测试装置,包括:[0023]目标单元测试类确定单元,用于利用预先设置的配置文件对用户指定的包进行解析,将解析所得的若干个单元测试类确定为目标单元测试类;[0024]目标单元测试类处理单元,用于针对每一个所述目标单元测试类均进行下述处理过程,直至目标单元测试类的测试案例均被执行完毕:[0025]利用Junit线程调用所述目标单元测试类的每一个测试案例;[0026]利用预设的基础测试类检查当前环境有无Spring容器,若没有,则创建Spring容器,创建的所述Spring容器包括每一个所述目标单元测试类执行时所必须的javabean注册信息;[0027]利用Junit线程调用并执行所述目标单元测试类的每一个测试案例;[0028]Spring容器销毁单元,用于销毁所述Spring容器。[0029]优选地,所述目标单元测试类处理单元在利用Junit线程调用并执行所述目标单元测试类的每一个测试案例时,具体为:[0030]利用Junit线程调用所述基础测试类中的第一预设方法,以完成单元测试的上下文环境的创建;[0031]利用junit线程调用并执行所述目标单元测试类的任意—个测试案例;[0032]在检测到所述测试案例执行完毕后,销毁创建的上文下文环境,并返回至所述利用Junit线程调用所述基础测试类中的第一预设方法,以完成单元测试的上下文环境的创建的步骤,直至所述目标单元测试类的每一个测试案例均被执行完毕。[0033]优选地,创建的所述Spring容器还包括用于进行效率分析的切面拦截,则在所述利用Junit线程调用并执行所述目标单元测试类的每一个测试案例的同时,所述切面拦截会根据每一个测试案例执行的被测方法的包名、类名和方法名,对被测方法进行类别区分,并记录执行被测方法所消耗的时间。[0034]优选地,还包括:[0035]测试报告生成单元,用于利用所述切面拦截记录的数据,生成测试报告。[0036]优选地,所述测试报告生成单元包括:[0037]测试报告生成子单元,用于利用Apache的poi项目操作Excel表单,将所述切面拦截记录的数据填充至预先设置的模板中,以生成测试报告。[0038]从上述的技术方案可以看出,本申请实施例提供的基于Junit的单元测试方法,利用预先设置的配置文件对用户指定的包进行解析,将解析所得的若干个单元测试类确定为目标单元测试类,在针对每一个目标单元测试类进行执行时,先判断是否存在Spring容器,若没有,则创建一个包括每一个目标单元测试类执行时所必须的Javabean注册信息的Spring容器,该Spring容器由于包括每一个目标单元测试类执行时所必须的Javabean注册信息,因此在执行每一个目标单元测试类时,无需重复建立Spring容器,也即不需要重复初始化Spring容器,大大提高了批量测试执行效率。附图说明[0039]为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。[0040]图1为本申请实施例公开的一种基于Junit的单元测试方法流程图;[0041]图2为本申请实施例公开的一种针对每一个目标单元测试类处理方法流程图;[0042]图3为本申请实施例公开的一种基于Junit的单元测试装置结构示意图。具体实施方式[0043]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。[0044]参见图1,图1为本申请实施例公开的一种基于Junit的单元测试方法流程图。[0045]如图1所示,该方法包括:[0046]步骤S100、利用预先设置的配置文件对用户指定的包进行解析,将解析所得的若干个单元测试类确定为目标单元测试类;[0047]具体地,我们预先设置好了配置文件,规定了哪些单元测试类需要进行测试。通过对用户指定的包进行解析,将规定的单元测试类确定为目标单元测试类。[0048]步骤S110、针对每一个所述目标单元测试类均进行处理,直至目标单元测试类的测试案例均被执行完毕;[0049]具体地,针对每一个目标单元测试类的处理过程,下文将进行详细介绍。一个单元测试类包括若干个测试案例,每个单元测试类都对应一个被测方法,测试案例的执行过程即为执行被测方法的过程。[0050]步骤Sl2〇、销毁所述Spring容器。[0051]具体地,在确定所有的目标单元测试类均已经执行完毕后,销毁Spring容器。[0052]接着,我们介绍上文针对每一个目标单元测试类的处理过程,如图2所示,包括:[0053]步骤S2〇0、利用Junit线程调用所述目标单元测试类的每一个测试案例;[0054]步骤SMO、利用预设的基础测试类检查当前环境有无Spring容器;[0055]若没有,则执行步骤S220,若有,则执行步骤S230;[0056]步骤S220、仓丨j建Spring容器;[0057]具体地,创建的所述Spring容器包括每一个所述目标单元测试类执行时所必须的Javabean注册信息。一个Spring容器只有包括一个单元测试类执行时所必须的javabean注册信息时,才能够完成该单元测试类的执行。[0058]本实施例创建的Spring容器由于包括每一个所述目标单元测试类执行时所必须的Javabean注册信息,因此可以适用于每一个目标的那一刻测试类的执行。[0059]步骤S230、利用Junit线程调用并执行所述目标单元测试类的每一个测试案例。[0060]本申请实施例提供的基于Junit的单元测试方法,利用预先设置的配置文件对用户指定的包进行解析,将解析所得的若干个单元测试类确定为目标单元测试类,在针对每一个目标单元测试类进行执行时,先判断是否存在Spring容器,若没有,则创建一个包括每一个目标单元测试类执行时所必须的Javabean注册信息的Spring容器,该Spring容器由于包括每一个目标单元测试类执行时所必须的Javabean注册信息,因此在执行每一个目标单元测试类时,无需重复建立Spring容器,也即不需要重复初始化spring容器,大大提高了批量测试执行效率。[0061]进一步,我们介绍上述步骤S230的实现过程。[0062]步骤S230可以包括:[0063]利用Junit线程调用所述基础测试类中的第一预设方法,以完成单元测试的上下文环境的创建;[0064]具体地,基础测试类中设置了单元测试的上下文环境的创建方法,也即上述的第一预设方法。通过调用该方法可以完成上下文环境的创建。[0065]利用Junit线程调用并执行所述目标单元测试类的任意一个测试案例;[0066]在检测到所述测试案例执行完毕后,销毁创建的上文下文环境,并返回至所述利用Junit线程调用所述基础测试类中的第一预设方法,以完成单元测试的上下文环境的创建的步骤,直至所述目标单元测试类的每一个测试案例均被执行完毕。[0067]需要说明的是,建立了上下文环境之后,可以调用并执行一个测试案例,在该测试案例执行完毕后,为了避免下一个测试案例执行的混乱,我们通常需要将建立的上下文环境销毁,然后重新建立上下文环境。这样,执行一个测试案例需要重新建立并销毁一个上下文环境,直至目标单元测试类的所有测试案例均执行完毕。[0068]更进一步的,上述创建的Spring容器还可以包括用于进行效率分析的切面拦截,则在所述利用Junit线程调用并执行所述目标单元测试类的每一个测试案例的同时,所述切面拦截会根据每一个测试案例执行的被测方法的包名、类名和方法名,对被测方法进行类别区分,并记录执行被测方法所消耗的时间。其中,进行类别区分时,可以将其分为服务类、数据库访问类等。针对每一个被测方法,均记录其执行过程所消耗的时间。以便后续的效率分析。[0069]在上述基础上,本申请的方案还可以包括利用所述切面拦截记录的数据,生成测试报告的步骤。也即,将切面拦截记录的类别分类,被测方法执行消耗的时间等信息生成测试报告。[0070]具体的在生成测试报告时,可以利用Apache的poi项目操作Excel表单,将所述切面拦截记录的数据填充至预先设置的模板中,以生成测试报告。并可以将生成的测试报告进行打印。[0071]下面对本申请实施例提供的基于Junit的单元测试装置进行描述,下文描述的基于Junit的单元测试装置与上文描述的基于Junit的单元测试方法可相互对应参照。[0072]参见图3,图3为本申请实施例公开的一种基于junit的单元测试装置结构示意图。[0073]如图3所示,该装置包括:[0074]目标单元测试类确定单元31,用于利用预先设置的配置文件对用户指定的包进行解析,将解析所得的若干个单元测试类确定为目标单元测试类;[0075]目标单元测试类处理单元32,用于针对每一个所述目标单元测试类均进行下述处理过程,直至目标单元测试类的测试案例均被执行完毕:[0076]利用Junit线程调用所述目标单元测试类的每一个测试案例;[0077]利用预设的基础测试类检查当前环境有无Spring容器,若没有,则创建Spring容器,创建的所述Spring容器包括每一个所述目标单元测试类执行时所必须的javabean注册f舌息;[0078]利用Junit线程调用并执行所述目标单元测试类的每一个测试案例;[0079]Spring容器销毁单元33,用于销毁所述Spring容器。[00S0]其中,所述目标单元测试类处理单元在利用Junit线程调用并执行所述目标单元测试类的每一个测试案例时,具体为:[0081]利用Junit线程调用所述基础测试类中的第一预设方法,以完成单元测试的上下文环境的创建;[0082]利用Junit线程调用并执行所述目标单元测试类的任意一个测试案例;[0083]在检测到所述测试案例执行完毕后,销毁创建的上文下文环境,并返回至所述利用Junit线程调用所述基础测试类中的第一预设方法,以完成单元测试的上下文环境的创建的步骤,直至所述目标单元测试类的每一个测试案例均被执行完毕。[0084]可选的,创建的所述Spring容器还包括用于进行效率分析的切面拦截,则在所述利用Junit线程调用并执行所述目标单元测试类的每一个测试案例的同时,所述切面拦截会根据每一个测试案例执行的被测方法的包名、类名和方法名,对被测方法进行类别区分,并记录执行被测方法所消耗的时间。[0085]进一步,本申请公开的测试装置还可以包括测试报告生成单元,用于利用所述切面拦截记录的数据,生成测试报告。[0086]可选的,所述测试报告生成单元可以包括:[0087]测试报告生成子单元,用于利用Apache的poi项目操作Excel表单,将所述切面拦截记录的数据填充至预先设置的模板中,以生成测试报告。[0088]本申请实施例提供的基于junit的单元测试装置,利用预先设置的配置文件对用户指定的包进行解析,将解析所得的若干个单元测试类确定为目标单元测试类,在针对每一个目标单元测试类进行执行时,先判断是否存在Spring容器,若没有,则创建一个包括每一个目标单元测试类执行时所必须的Javabean注册信息的Spring容器,该Spring容器由于包括每一个目标单元测试类执行时所必须的枳财以仙注册信息,因此在执行每一个目标单元测试类时,无需重复建立Spring容器,也即不需要重复初始化Spring容器,大大提高了批量测试执行效率。[0089]最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。[0090]本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。[0091]对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

权利要求:1.一种基于Junit的单元测试方法,其特征在于,包括:利用预先设置的配置文件对用户指定的包进行解析,将解析所得的若干个单元测试类确定为目标单元测试类;针对每一个所述目标单元测试类均进行下述处理过程,直至目标单元测试类的测试案例均被执行完毕:利用Junit线程调用所述目标单元测试类的每一个测试案例;利用预设的基础测试类检查当前环境有无Spring容器,若没有,则创建Spring容器,创建的所述Spring容器包括每一个所述目标单元测试类执行时所必须的javabean注册信息;利用Junit线程调用并执行所述目标单元测试类的每一个测试案例;销毁所述Spring容器。2.根据权利要求1所述的测试方法,其特征在于,所述利用junit线程调用并执行所述目标单元测试类的每一个测试案例,包括:利用Junit线程调用所述基础测试类中的第一预设方法,以完成单元测试的上下文环境的创建;利用Junit线程调用并执行所述目标单元测试类的任意一个测试案例;在检测到所述测试案例执行完毕后,销毁创建的上文下文环境,并返回至所述利用Junit线程调用所述基础测试类中的第一预设方法,以完成单元测试的上下文环境的创建的步骤,直至所述目标单元测试类的每一个测试案例均被执行完毕。3.根据权利要求1或2所述的测试方法,其特征在于,创建的所述Spring容器还包括用于进行效率分析的切面拦截,则在所述利用Junit线程调用并执行所述目标单元测试类的每一个测试案例的同时,所述切面拦截会根据每一个测试案例执行的被测方法的包名、类名和方法名,对被测方法进行类别区分,并记录执行被测方法所消耗的时间。4.根据权利要求3所述的测试方法,其特征在于,还包括:利用所述切面拦截记录的数据,生成测试报告。5.根据权利要求4所述的测试方法,其特征在于,所述利用所述切面拦截记录的数据,生成测试报告的过程为:利用Apache的poi项目操作Excel表单,将所述切面拦截记录的数据填充至预先设置的模板中,以生成测试报告。6.—种基于Junit的单元测试装置,其特征在于,包括:目标单元测试类确定单元,用于利用预先设置的配置文件对用户指定的包进行解析,将解析所得的若干个单元测试类确定为目标单元测试类;目标单元测试类处理单元,用于针对每一个所述目标单元测试类均进行下述处理过程,直至目标单元测试类的测试案例均被执行完毕:利用Junit线程调用所述目标单元测试类的每一个测试案例;利用预设的基础测试类检查当前环境有无Spring容器,若没有,则创建Spring容器,创建的所述Spring容器包括每一个所述目标单元测试类执行时所必须的Javabean注册信息;利用Junit线程调用并执行所述目标单元测试类的每一个测试案例;Spring容器销毁单元,用于销毁所述Spring容器。7.根据权利要求6所述的测试装置,其特征在于,所述目标单元测试类处理单元在利用饪调用升讽仃所还曰你早兀测试类的每一个测试案例时,具体为:利用Junit线程调用所述基础测试类中的第一预设方法,以完成单元测试的上下文环境的创建;利用Junit线程调用并执行所述目标单元测试类的任意一个测试案例;在检测到所述测试案例执行完毕后,销毁创建的上文下文环境,并返回至所述利用Jimit线程调用所述基础测试类中的第一预设方法,以完成单元测试的上下文环境的创建的步骤,直至所述目标单元测试类的每一个测试案例均被执行完毕。8.根据权利要求6或7所述的测试装置,其特征在于,创建的所述Spring容器还包括用于进行效率分析的切面拦截,则在所述利用Junit线程调用并执行所述目标单元测试类的每一个测试案例的同时,所述切面拦截会根据每一个测试案例执行的被测方法的包名、类名和方法名,对被测方法进行类别区分,并记录执行被测方法所消耗的时间。9.根据权利要求8所述的测试装置,其特征在于,还包括:测试报告生成单元,用于利用所述切面拦截记录的数据,生成测试报告。10.根据权利要求9所述的测试装置,其特征在于,所述测试报告生成单元包括:测试报告生成子单元,用于利用Apache的poi项目操作Excel表单,将所述切面拦截记录的数据填充至预先设置的模板中,以生成测试报告。

百度查询: 中国建设银行股份有限公司 一种基于Junit的单元测试方法及装置

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。