1.项目场景:
面对一个庞大且历史悠久的项目,单元测试的有效性低下(不足10%),急需提升测试质量,于是上头临时安排个任务,下一周开会时要求断言有效率要提升到90%,这时相信各位小伙伴们心里已经一万个策马奔腾........这里小哥就不绕关子直接上代码了。
2.解决方案:
利用JavaParser库解析Java源码,识别出带有@Test注解的方法,并检查这些方法是否已含有断言。对于缺少断言的方法,在方法末尾自动追加assertTrue(true);
作为基本的断言,确保测试覆盖率的统计更加准确。
3.实现细节:
- 初始化阶段:读取配置文件,获取待处理的测试类信息。
- 处理文件:逐个解析测试类文件,检查并修改。
- 断言追加逻辑:在测试方法末尾追加默认断言,同时处理包导入逻辑。
4.注意: projectTestJavaPath 这个变量配置你测试类在哪个包下,这里写的时绝对路径:“D:\\data\\stores\\work\\git\\testProject\\src\\test\\java\\”
configPath 这个变量是一个配置文件,这里的配置来自jinkens:
格式长这样子:
com.csair.test.TestCaseServletZhougrTest#base
com.csair.test.TestCaseServletZhougrTest#AirportPickupService
com.csair.test.TestCaseServletZhougrTest#grouponVo
com.csair.test.TestCaseServletZhougrTest#supply
com.csair.test.TestPoJoEnumCaiYouLinTest#testPoJo
大家可以根据自己的实际情况来修改。
pom.xml
在pom中增加javaparser依赖快速帮我们解析java文件。
<dependency>
<groupId>com.github.javaparser</groupId>
<artifactId>javaparser-symbol-solver-core</artifactId>
<version>3.23.1</version> <!-- 检查最新版本 -->
</dependency>
<dependency>
<groupId>com.github.javaparser</groupId>
<artifactId>javapar