You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CaseComment对象触发器无代码覆盖率 测试类无法覆盖问题求助

触发器覆盖率为0的常见原因
  • 触发器未激活:进入Setup→Apex Triggers,检查CaseCommentTrigger的Active复选框是否勾选,未激活的触发器不会在数据操作时执行,无法统计覆盖率。
  • 测试运行范围未包含触发器:单独运行测试类时如果未将触发器纳入运行统计范围,或者部署测试时仅提交测试类未提交触发器,都会导致覆盖率统计为0。
  • 数据插入未实际生效:Org内存在的其他验证规则、必填字段校验、前置触发器异常会导致测试中的CaseComment插入操作被回滚,触发器不会被触发。你可以在INSERT tComment代码后添加System.assertNotEquals(null, tComment.Id);验证数据是否插入成功。
  • Util类执行抛出未捕获异常:CaseCommentTriggerUtil.notifyCaseRequestorAndCreator方法执行时如果抛出未捕获的异常,会导致触发器代码执行中断,无法完成覆盖率统计,可通过查询测试运行对应的Apex日志排查异常原因。
正确覆盖方案

优化后测试类代码

@isTest
public with sharing class CaseCommentTriggerTest {
    @isTest
    public static void createCaseComment() {
        // 构造测试Case数据
        Case tCase = new Case(
            Status = 'New',
            Description = 'Test Description',
            Origin = 'Email',
            Priority = 'Low'
        );
        INSERT tCase;
        System.assertNotEquals(null, tCase.Id, '测试Case插入失败');

        // 构造测试CaseComment数据
        CaseComment tComment = new CaseComment(
            ParentId = tCase.Id,
            CommentBody = 'Some Comment',
            IsPublished = TRUE
        );
        
        Test.startTest();
        INSERT tComment;
        Test.stopTest();
        
        // 验证CaseComment插入成功
        System.assertNotEquals(null, tComment.Id, '测试CaseComment插入失败');
        // 可补充业务逻辑断言,验证Util方法执行结果,例:验证通知记录是否生成、关联Case字段是否更新等
    }
}

操作注意事项

  • 运行测试时需同时选中CaseCommentTrigger、CaseCommentTriggerUtil、CaseCommentTriggerTest三个元数据,避免统计范围不全
  • 若测试类使用with sharing声明,需确保测试上下文用户拥有Case、CaseComment的读写权限,以及Util类的执行权限
  • 若存在Profile/权限集限制CaseComment的创建权限,可在测试类中通过System.runAs()指定有权限的用户执行插入操作

内容的提问来源于stack exchange,提问作者Akshay Vasu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 23:15:02