我司的话有个类似的场景,不过并不是看影响范围,而是看 diff 的测试覆盖率。基本思路就是获取两次 commit 之间的 diff 内容,找到涉及的文件及行数,然后传给 jacoco --diff-code 参数,这样就相当于只针对 diff 部分跑了一遍单测。但这种做法也不是没有缺点。比如对反射的支持度差;再比如如果只是改了某方法的内部实现、而外部调用方并没有任何改动,那么外部调用的地方其实是没有 diff 的;等等。更充分的话肯定还是要靠 CI/CD 工作流 + 人工测试去保证。
我司的话有个类似的场景,不过并不是看影响范围,而是看 diff 的测试覆盖率。
基本思路就是获取两次 commit 之间的 diff 内容,找到涉及的文件及行数,然后传给 jacoco
--diff-code
参数,这样就相当于只针对 diff 部分跑了一遍单测。但这种做法也不是没有缺点。比如对反射的支持度差;再比如如果只是改了某方法的内部实现、而外部调用方并没有任何改动,那么外部调用的地方其实是没有 diff 的;等等。
更充分的话肯定还是要靠 CI/CD 工作流 + 人工测试去保证。