[发明专利]一种单元测试方法及系统有效
申请号: | 201911385923.2 | 申请日: | 2019-12-29 |
公开(公告)号: | CN111008153B | 公开(公告)日: | 2023-05-30 |
发明(设计)人: | 魏臻;程磊;汤俊;方莹;徐自军;胡庆新;程运安;徐伟;黄鹏 | 申请(专利权)人: | 合肥工大高科信息科技股份有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 合肥天明专利事务所(普通合伙) 34115 | 代理人: | 金凯 |
地址: | 230088 安*** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 单元测试 方法 系统 | ||
本发明公开了一种单元测试方法及系统,属于软件单元测试技术领域,包括:查找原测试用例所在的测试文件,并在测试文件头部添加反射的命名空间的引用;利用反射访问私有成员或私有函数,编写新的测试用例;根据新的测试用例,执行单元测试代码,生成测试报告。通过利用C#反射查看和调用程序集的类和方法,利用反射动态创建类型的实例,将类型绑定到现有对象或从现有对象中获取类型并调用其方法或者访问其字段和属性来编写单元测试用例,以达到单元测试覆盖率要求。
技术领域
本发明涉及软件单元测试技术领域,特别涉及一种单元测试方法及系统。
背景技术
在VS2012中在做C#单元测试时,对于修改测试用例以满足测试覆盖率的原则是:对于执行路径要求对模块中每一个独立的路径进行测试;模块中每条语句至少执行一次即满足每一个分支都至少被覆盖一次。
但是当被测函数中存在访问私有成员字段的语句,或者是本身是私有函数时,因为受保护级限制,不能访问,就无法直接去修改测试用例中的方法的参数值,无法满足测试代码的覆盖率要求,然而为了保证代码的有效性,单元测试又必不可少。
发明内容
本发明的目的在于克服现有技术存在的缺陷,以实现对含有私有成员函数或私有函数的单元测试。
为实现以上目的,本发明采用一种单元测试方法,用于对含有私有成员的函数或私有函数进行单元测试,包括如下步骤:
查找原测试用例所在的测试文件,并在测试文件头部添加反射的命名空间的引用;
利用反射访问私有成员或私有函数,编写新的测试用例;
根据新的测试用例,执行单元测试代码,生成测试报告。
进一步地,在对含有私有成员的函数进行单元测试时,所述利用反射访问私有成员,编写新的测试用例,包括:
查找所述原测试用例,并实例化被测类;
通过反射获取类中的私有字段,以在测试文件中修改原测试用例,并编写所述新的测试用例。
进一步地,所述通过反射方法获取类中的私有字段,以在测试文件中修改原测试用例,并编写所述新的测试用例,包括:
获取所述被测类类型关联的Type对象 t;
利用反射的FieldInfo,发现字段属性并提供对字段元数据的访问权,通过Type对象 t,获取所述被测类中的私有字段;
利用FieldInfo类的SetValue方法,设置所述被测类中的私有字段的值,并完成测试用例编写。
进一步地,在对私有函数进行单元测试时,所述利用反射方法访问私有函数,编写新的测试用例,包括:
在所述测试文件中添加所述私有函数的测试用例,并实例化被测类;
通过反射方法获取被测类中的私有函数,并编写所述新的测试用例。
进一步地,所述通过反射方法获取被测类中的私有函数,并编写所述新的测试用例,包括:
获取所述被测类类型关联的Type对象 t;
利用反射的MethodInfo,发现方法的属性并提供对方法元数据的访问,通过Type对象t,访问所述被测类中的私有函数;
初始化私有函数的参数;
利用MethodInfo类的Invoke方法将所述被测类对象名称和私有方法参数(此处的“私有方法参数”指的是一个对象数组,这些对象与调用的私有函数的参数具有相同的数量、顺序和类型;如果该私有函数是无参的,应为null。)传给Invoke方法,来调用所述私有函数,并编写所述新的测试用例。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于合肥工大高科信息科技股份有限公司,未经合肥工大高科信息科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911385923.2/2.html,转载请声明来源钻瓜专利网。