一种单元测试代码生成方法及装置制造方法及图纸

技术编号:7578794 阅读:223 留言:0更新日期:2012-07-19 02:52
本发明专利技术公开了一种单元测试代码生成方法及装置。本发明专利技术实施例的单元测试代码生成方法通过获取源代码文件的操作单元和对应的参数属性,并获取配置文件中的单元测试代码编写规则,再结合这三者自动生成对应于该源代码文件的单元测试代码,使得当需要进行测试时,可直接将生成的该单元测试代码在JUnit软件中执行即可,从而不需要程序员手动来编写单元测试代码,使得程序员只需根据方法的实际要求,修改参数即可,进而降低了程序员的工作量;并且通过本发明专利技术实施例的方法及装置生成的代码,用JUnit软件统计覆盖正确性能够达到20%左右,剩下的代码自行做出小的参数修改就能正确执行。?

【技术实现步骤摘要】

本专利技术涉及单元测试技术,尤其涉及一种单元测试代码生成方法及装置
技术介绍
单元测试是集中对源代码实现的每一个程序单元进行测试,检测各个程序单元否正确地实现了规定的功能,以及检查各程序模块的返回值是否正确。单元测试检测每一个控制结构的分支以确保完全覆盖和最大可能的错误检查。JUnit单元测试代码则是指按一定规范进行编写的单元测试代码,对应的JUnit测试工具需要根据该JUnit单元测试代码, 才能统计出覆盖率、正确性、数据校验等信息。单元测试是为了尽可能多的发现程序的错误。而发现错误,是为了修正错误,是需要对程序代码进行修改的。每当程序代码被修改的时候,程序配置的某些方面,例如文档或者数据,也会被修改。目前,当程序员编写完项目代码后,需要在源代码中手动添加单元测试代码来检验源代码的正确性。这种方法需要修改大量的程序代码,从而工作量大,耗时、重复性工作很大,从而使得编码效率较低。
技术实现思路
本专利技术实施例所要解决的技术问题在于,提供一种单元测试代码生成方法及装置,能够自动生成模版化的单元测试代码,降低程序员编写代码的工作量,提高了工作效率。为了解决上述技术问题,本专利技术实施例提供了一种单元测试代码生成方法,包括导入源代码集,所述源代码集包括至少一个源代码文件;根据所述源代码集的目录规则,依次获取各个源代码文件所包含的操作单元,以及与该操作单元对应的参数属性;当每获取一个源代码文件的操作单元以及对应的参数属性后,获取预先定义的配置文件中的单元测试代码编写规则;并根据所述单元测试代码编写规则和所述源代码文件的操作单元和对应的参数属性,生成对应的单元测试代码。其中,所述源代码文件为Java文件,所述单元测试代码编写规则为JUnit单元测试代码编写规则。其中,所述根据所述单元测试代码编写规则和所述源代码文件的操作单元和对应的参数属性,生成对应的单元测试代码的步骤,具体包括根据所述源代码文件的目录结构,生成对应目录以及该目录下的空白目标文件;根据所述单元测试代码编写规则和所述源代码文件的操作单元和对应的参数属性,在所述空白的目标文件中生成单元测试代码。其中,所述依次获取各个源代码文件所包含的操作单元,以及与操作单元对应的参数属性具体包括依次分析各个所述源代码文件的结构,并根据Java语言反射机制对所述源代码文件从上至下进行解释,得到所述源代码文件的多个操作单元,以及与每一个操作单元对应的参数属性。其中,所述操作单元对应的参数属性包括输入参数、参数类型及返回值。其中,所述JUnit单元测试代码编写规则包括类名后置名词为“Test”;操作单元名的前置名词为“test” ;对应于该操作单元的测试函数无返回值。本专利技术还提供了一种单元测试代码生成装置,包括源代码集导入模块,用于导入源代码集,所述源代码集包括至少一个源代码文件;源代码文件属性获取模块,用于根据所述源代码集的目录规则,依次获取各个所述源代码文件的操作单元,以及对应于所述操作单元的参数属性;代码编写规则获取模块,用于在所述源代码文件属性获取模块每获取到一个源代码文件的操作单元和对应的参数属性时,获取预先定义的配置文件中的单元测试代码编写规则;代码自动生成模块,用于根据所述源代码文件的操作单元、参数属性和所述单元测试代码编写规则,生成对应的单元测试代码。其中,所述源代码文件为Java文件,所述单元测试代码编写规则为JUnit单元测试代码编写规则。其中,所述代码自动生成模块包括文件生成子模块,用于根据所述源代码文件的目录结构,生成对应目录以及该目录下的空白目标文件;代码生成子模块,用于根据所述单元测试代码编写规则和所述源代码文件的操作单元和对应的参数属性,在所述空白的目标文件中生成单元测试代码。其中,所述源代码文件属性获取模块包括结构分析子模块,用于分析所述源代码文件的结构;属性获取子模块,用于根据Java语言反射机制对所述源代码文件从上至下进行解释, 得到所述源代码文件的多个操作单元,以及每一个操作单元的参数属性。实施本专利技术实施例,具有如下有益效果本专利技术的单元测试代码生成方法通过从预先定义的配置文件中获取单元测试代码编写规则,再结合所获取的源代码文件的操作单元和对应的参数属性,自动生成对应于该源代码文件的单元测试代码,使得当需要进行测试时,可直接将该单元测试代码在JUnit软件中执行即可,从而不需要程序员手动来编写单元测试代码,使得程序员只需根据方法的实际要求,修改参数即可,进而降低了程序员的工作量;并且通过本专利技术实施例的方法及装置生成的代码,用JUnit软件统计覆盖正确性能够达到20%左右,剩下的代码自行做出小的参数修改就能正确执行。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图I是本专利技术的单元测试代码生成方法的一实施例的流程图2是本专利技术的单元测试代码生成方法的一实施例中的配置文件的示意图3是本专利技术的单元测试代码生成方法的一实施例中源代码的示意图4是本专利技术的单元测试代码生成方法的一实施例中生成的单元测试代码的示意图; 图5是本专利技术的单元测试代码生成装置的一实施例的功能模块图。具体实施例方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。参见图1,为本专利技术的单元测试代码生成方法的一实施例的流程图。具体实施时, 本专利技术实施例的单元测试代码生成方法包括S101,导入源代码集,该源代码集包括至少一个源代码文件。具体实施时,首先在JUnit软件中,创建一个项目工程,其次再将由多个源代码文件组成的源代码集导入该项目工程内。在一具体实施例中,该源代码文件为Java文件。S102,根据源代码集的目录规则,依次获取各个源代码文件的操作单元以及与该操作单元对应的参数属性。具体实施时,由于被测试的源代码集包括多个源代码文件,即该源代码集所在子目录中包括了多个源代码文件,从而可根据该子目录中个存储的源代码文件的顺序依次获取各个源代码文件的多个操作单元以及与操作单元对应的参数属性。本实施例中“依次获取”是指获取到一个源代码文件的操作单元和对应的参数属性,并结合获取的单元测试代码编写规则生成对应该源代码文件的单元测试代码后,递归到该源代码文件所在子目录, 再获取下一个源代码文件的操作单元和对应的参数属性,并结合再次获取的单元测试代码编写规则生成对应该下一个源代码文件的单元测试代码,直至生成对应于所有源代码文件的单元测试代码。本实施例中的“目录规则”可以是实验员根据项目需要进行设定的各个源代码文件排列顺序,也可以是按照各个源代码文件的大小、修改时间等排列的顺序。具体实施时,获取各个源代码文件的操作单元以及与该操作单元对应的参数属性时,需要分析该源代码文件的结构,并利用Java语言的反射机制自对该源代码文件从上至下进行解释,得到该源代码文件包括的多个操作单元本文档来自技高网...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:何振飞邓勇
申请(专利权)人:深圳市同洲视讯传媒有限公司
类型:发明
国别省市:

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

1
相关领域技术