覆盖率报告显示 92%,出问题那段 if 只走真分支,else 一次没执行,行覆盖率照样把这几行算成已覆盖。日志里能对上时间点,这种反而好排。
行覆盖率只看某一行有没有执行,if 判断那一行执行过就记一笔,两个分支走一个也拿满分,报告默认只展示行指标,分支计数器没人打开看。这一点先确认清楚,后面就不用反复试。
mvn test jacoco:report grep -o 'BRANCH.*' target/site/jacoco/jacoco.csv
「jacoco 分支覆盖率」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。
日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。权限不要一口气开到最大,先加到够用再往上试,范围小才好收。
处理上按这个顺序:报告里切到分支指标看未覆盖数量;给 else 和异常分支补用例;门禁同时卡行覆盖率和分支覆盖率。
结果对不对很好判断,同一条 if 的两个分支在报告里都标绿,分支覆盖率不再虚高。
