Attachment与Email Attachment测试覆盖率不足,AttachPDF方法无覆盖求助
排查AttachPDF方法未被测试覆盖的关键点
- 分支逻辑未完全触发:检查
AttachPDF里的条件判断(比如空值校验、收件人数量判断),你传入的测试参数可能没满足所有分支的执行条件。比如如果代码里有if (pdfContent != null)才添加附件,那测试时要构造能生成有效PDF的场景,同时也要构造PDF生成失败的场景,覆盖else或者catch块。 - 方法调用未真正执行:确认测试类里调用
AttachPDF的姿势对不对——如果是实例方法,有没有先new出FlowinvokedAndAttachPDF的实例?参数是不是完全匹配方法的入参要求?比如有没有漏传必填的记录ID、收件人邮箱这类参数,导致方法刚进就直接return了? - 外部依赖未正确模拟:生成PDF依赖
Page.getContentAsPDF、发送邮件依赖Messaging.sendEmail,这些操作要放在Test.startTest()和Test.stopTest()之间,不然异步的邮件发送逻辑不会执行。另外,测试时要确保Visualforce页面有权限访问,必要时用Test.setCurrentPage指定页面,或者用System.runAs()切换到有对应权限的用户。 - 测试数据不完整:如果方法依赖关联数据(比如要生成PDF的记录、联系人信息),测试类里有没有提前插入这些数据?要是数据缺失,方法里的逻辑可能走不下去,自然覆盖不到。
- 异常场景未覆盖:
AttachPDF里的try-catch块如果没触发过异常,这部分代码就不会被统计到覆盖率里。可以故意传无效参数(比如不存在的记录ID)触发PDF生成失败,或者构造邮件发送失败的场景,来覆盖catch里的代码。 - 覆盖率统计的小问题:有时候Salesforce的覆盖率统计会有延迟,重新跑一遍测试再刷新看看。另外可以在
AttachPDF里加几行System.debug(),看测试日志里有没有输出,确认方法确实被执行了。
内容的提问来源于stack exchange,提问作者mike
相关产品推荐
相关产品推荐

