欢迎光临
我们一直在努力

用 AI 给开源项目补单元测试:JaCoCo 覆盖率提升实录

一、实验背景

这轮课程实验的主题是代码覆盖率:给 Teedy(一个 Java 写的开源文档管理系统)接入 JaCoCo,生成覆盖率报告,再亲手补测试把数字拉上去。实验还要求借助 AI 工具生成测试代码——这正是我想练的:AI 时代写测试的方式确实变了。

二、环境选择

指导书给的环境是 Windows 加 WSL,工具用 IDEA。不过这次我把项目直接放到了云服务器上跑:单元测试本来就是流水线的核心环节,放在一直在线的服务器上执行,测完浏览器直接看报告,比本地环境更接近真实的持续集成场景。

用的是三丰云的云服务器,2 核 2G 跑 Ubuntu。整套全量测试加报告生成稳定跑完,作为免费产品这个配置跑 Java 工程挺实用;他家同时提供免费虚拟主机,更适合放网站,跑构建这类活儿我就直接选了云服务器。

三、接入 JaCoCo,拿到初始报告

在项目根目录的构建配置里加入 JaCoCo 插件,思路是让它在测试执行前注入覆盖率探针、测试结束后自动产出报告——之后每次跑完全量测试,无需任何额外操作就能拿到最新数据。

第一份报告出来了:整体指令覆盖率 23%,实体对象所在的包更是只有 7%,报告页面大面积红色,直观展示了这个成熟开源项目在测试上的真实缺口。

四、让 AI 写测试

从报告的类列表里挑出覆盖率最低的实体类 Tag,把代码发给大模型,提示词就一句:“请为这个类编写 JUnit 5 单元测试”。AI 很快返回一组测试代码,复制进项目对应的测试目录,编译报错就顺着提示修——主要是用模拟依赖替掉数据库调用,让测试独立运行。

五、复测对比

再次执行全量测试并刷新报告:Tag 类的指令、行、方法覆盖率全部达到 100%,所在包从 7% 提升到 11.7%,整体覆盖率从 23% 提升到 24.7%。前后两张报告截图放在一起,单元测试对覆盖率的作用一目了然。

六、总结

一次实验两个收获:一是摸清了覆盖率报告的解读方法,从整体到包再到类逐层下钻定位薄弱点;二是验证了 AI 辅助测试的效率——生成、修复、复测一气呵成。对学 Java 的人来说,给项目补一轮测试比再写个新功能更能加深对代码质量的理解。手头有台免费云服务器的话,这套实验随时可以复现。

赞(0)
未经允许不得转载:171主机测评 » 用 AI 给开源项目补单元测试:JaCoCo 覆盖率提升实录
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址