System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种针对NPE的单元测试自动修复方法技术_技高网

一种针对NPE的单元测试自动修复方法技术

技术编号:40411522 阅读:4 留言:0更新日期:2024-02-20 22:30
本发明专利技术涉及互联网应用技术领域,具体而言,本申请涉及一种针对NPE的单元测试自动修复方法。可以解决因修改源代码产生的NPE问题,而现有技术方案无法解决上述问题。现有技术方案是在出现由于库升级造成单元测试异常时,对部分升级的类进行降级,恢复旧版本的类保障项目正常运行。但是现有技术方案无法解决修改源代码造成的NPE。本发明专利技术技术要点和现有技术相比,优点是解决了现有技术方案除了第三方库升级之外产生的NPE问题,如修改源代码造成的NPE。本发明专利技术是因为采用了技术方案中NPE处理模块针对性修复NPE的技术手段才具有了上述优点。

【技术实现步骤摘要】

本专利技术涉及互联网应用,具体而言,本申请涉及一种针对npe的单元测试自动修复方法。


技术介绍

1、在互联网软件开发中,单元测试是项目开发的重要组成部分,是指对软件中的最小可测试单元进行检查和验证。本文中特指java单元测试,在java里单元指一个类。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。单元测试通过将每个类作为最小测试单元进行覆盖测试,以检测代码质量,保证代码的正确性。现有单元测试需要开发人员根据源代码逐行进行测试开发,执行单元测试时遇到异常需要手动排查问题,添加或修改测试代码以解决异常,该过程需要耗费大量时间精力。在更新第三方库时,旧单元测试代码与更新后的第三方库中的类不匹配,也会造成代码执行异常,针对这种情况,经检索已存在一种技术方案,该方案是在出现由于库升级造成单元测试异常时,对部分升级的类进行降级,恢复旧版本的类保障项目正常运行。所述现有技术方案名称为:《一种第三方库版本升级的异常自动调试系统及方法》,申请号:cn201910449608.5。

2、上述现有技术方案存在的问题是,对类进行降级只能解决部分由第三方库升级造成的单元测试异常问题,但是无法解决由于其他原因产生的执行异常,比如修改源代码后,也可能会造成旧单元测试代码执行异常,尤其是npe为null pointer exception,空指针异常,在单元测试中大多数异常都是npe,手动修复需要花费大量的时间。现有技术方案无法解决上述情况造成的执行异常。


技术实现思路

1、本专利技术解决现有技术中测试代码执行异常无法修复的情况,提供一种针对npe的单元测试自动修复方法。

2、解决现有技术不足提供一种针对npe的单元测试自动修复方法,包括如下步骤:依次通过测试校验模块、异常捕获模块和npe处理模块,

3、所述测试校验模块,启动单元测试用例后,校验测试是否通过,测试用例执行过程中没有检测到执行异常,则表示测试通过,流程结束,若测试不通过,流程跳转到异常捕获进入下一步骤;

4、所述异常捕获模块,对测试中检测到的异常进行类型捕获,在单元测试执行异常中,npe空指针异常居多,但也存在其他异常,进行异常甄别,针对npe的单元测试自动修复,测试校验检测到异常后,异常捕获会判断该异常是否是npe,若是npe,则转入下一步骤的npe处理;若不是npe,系统会将该异常信息抛出,以供开发人员手动修复异常;

5、所述npe处理模块,对上一步骤异常捕获捕获到的npe异常进行自动处理,处理修复后再次执行步骤一的测试校验,若无异常,则通过测试;若有异常,则重复上述步骤,直至解决异常或抛出异常。

6、本专利技术专利的有益效果有以下几个方面:

7、1、可以解决因修改源代码产生的npe问题,而现有技术方案无法解决上述问题。现有技术方案是在出现由于库升级造成单元测试异常时,对部分升级的类进行降级,恢复旧版本的类保障项目正常运行。但是现有技术方案无法解决修改源代码造成的npe。本专利技术技术要点和现有技术相比,优点是解决了现有技术方案除了第三方库升级之外产生的npe问题,如修改源代码造成的npe。本专利技术是因为采用了技术方案中npe处理模块针对性修复npe的技术手段才具有了上述优点。

8、2、本方案可以将npe问题和非npe问题分开处理,系统自动修复npe以节省开发时间。所述模块集中处理占异常大多数的npe问题,而开发人员只需要手动处理少量的非npe问题,因此本专利技术技术方案与现有技术方案相比优点是可以节省开发人员修复单元测试的时间。本专利技术是因为采用了技术方案中的npe捕获模块将npe问题和非npe问题进行分开处理的技术手段才具有了上述优点。

9、3、npe处理模块为本方案创新点,npe处理模块又分为四个子模块。本方案在处理npe时,采用多个子模块依次进行处理,其中一个子模块处理了npe后,后续模块就不需要再执行,这样可以节省系统资源。上述技术方案实施例中,分成多个步骤多个子模块依次对npe问题进行处理的有益效果是,只要其中一个步骤处理了npe问题,比如修复了npe不抛出异常,或者直接抛出其他类型异常,就不需要执行其他步骤,所以节省了系统资源。比如在本专利技术技术方案第一步中没有发现异常,就不需要执行其他步骤判断是否有npe,将资源利用于处理其他测试代码。

10、4、本方案可以解决不同类型的npe。本方案npe处理模块分为四个子模块,是为了解决不同情况的npe,最大程度的覆盖所有可能造成npe的情况,优点是可以实现不同情况npe自动修复。

11、5、本方案可以在修复单元测试npe时对源代码进行优化,如添加判空校验,可以避免npe,提升代码的质量。

本文档来自技高网...

【技术保护点】

1.一种针对NPE的单元测试自动修复方法,其特征在于包括如下步骤:依次通过测试校验模块、异常捕获模块和NPE处理模块,

2.根据权利要求1所述一种针对NPE的单元测试自动修复方法,其特征在于所述NPE处理模块分为Class类处理模块、Param参数处理模块、This本地方法处理模块、Imitate模拟方法处理模块。

3.根据权利要求2所述一种针对NPE的单元测试自动修复方法,其特征在于所述Class类处理模块检测缺少相应Class类,在Java源代码中,若没有将所需的类注入到测试类中,单元测试执行时就会因找不到对应类而报NPE空指针异常,Class类处理模块接收到NPE信息后,会先检查上述异常信息中对应的源代码信息,获取源代码信息中的类名,随后再去出现异常的单元测试代码中寻找是否注入了该类,若有该类则说明不是缺失类造成的NPE,交由下一子模块进行处理;若没有该类,则通过NPE信息获取源代码中的类名,再将对应类注入到异常的测试代码中相应位置,注入类后系统便找到对应类,不会再报找不到类的NPE,完成上述操作后,系统将再次执行测试校验模块,直至测试通过或者抛出异常;

...

【技术特征摘要】

1.一种针对npe的单元测试自动修复方法,其特征在于包括如下步骤:依次通过测试校验模块、异常捕获模块和npe处理模块,

2.根据权利要求1所述一种针对npe的单元测试自动修复方法,其特征在于所述npe处理模块分为class类处理模块、param参数处理模块、this本地方法处理模块、imitate模拟方法处理模块。

3.根据权利要求2所述一种针对npe的单元测试自动修复方法,其特征在于所述class类处理模块检测缺少相应class类,在java源代码中,若没有将所需的类注...

【专利技术属性】
技术研发人员:魏宗翰蒋永录杨霞
申请(专利权)人:中电万维信息技术有限责任公司
类型:发明
国别省市:

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

1