课程章节介绍
同学们,我们今天来说说代码覆盖率是怎么计算的。这个概念很重要,但别担心,我会用最简单的话讲清楚。
首先,代码覆盖率的百分比是怎么来的?其实就是“被覆盖到的行数”除以“可覆盖的总行数”。注意,这里的分母只算那些实实在在能执行的行,像注释、空白行,还有我们平时调试用的 `System.debug()` 语句,全都会被排除在外,不参与计算。
那怎么算“一行”呢?有个小细节:如果一行代码里写了多条语句,比如 `a++; b++;` 写在同一行,那这整行就算成一条。反过来,如果一条很长的语句跨了好几行,那每一行都会被单独计算。总之,是按“代码行”来数,不是按语句条数。
再提醒一下,测试类本身也是代码,但它们在计算覆盖率时是不被算进去的。还有,有时候因为编译器的优化,某些代码行可能压根儿不会执行,这种行也不会被计入覆盖范围。
那我们怎么看到具体数字呢?有两种常用方法。第一,直接打开开发者控制台,找到“测试”那个选项卡,里面会用颜色清晰地标出哪些行覆盖了、哪些没覆盖。第二,要是你想用程序化的方式获取数据,可以查询Salesforce提供的两个API对象:一个是 `ApexCodeCoverageAggregate`,它存着每个类的总体覆盖率数据;另一个是 `ApexCodeCoverage`,它存着每个测试方法对应的覆盖情况。注意名字有点长,但看一遍就认识了。
简单总结:覆盖率只看可执行行,排除注释和调试语句;测试类自身不算;想查数据就去开发者控制台或者查那两个系统对象。这样讲是不是就清晰多了?好,我们继续下一个知识点。
关键词
Apex
Salesforce
Developer Guide