1

我正在尝试对触发器进行一个小的更改,并且收到有关另一个触发器的单元测试覆盖率不足 (0%) 的警告(如下所示的 setTitle)

对此有一个测试(请参见下文),但由于某种原因,它没有被考虑在内。此测试的定义类似于其他成功运行的测试,但在这种情况下,触发器没有被调用(导致覆盖不足的警告)

我可以查看的任何想法或建议以及是否有任何方法可以通过测试?

触发测试:

Call_Report__c c = new Call_Report__c(name='test cr', opportunity__c=o.id);
insert c;

触发器声明:

trigger setTitle on Call_Report__c (before insert)

谢谢!

4

1 回答 1

0

我认为最好的方法是尝试在您的目标组织中手动运行单元测试并检查调试日志。如果功能仍按预期运行,还可以从 UI 手动检查。

一些技巧:

  1. (仅在部署到沙箱时适用)听起来很愚蠢,您确定触发器处于活动状态吗?当您从 UI 或随附的元数据 xml 中的状态字段编辑它们时,会有一个复选框
  2. 类似的复选框 - 触发器是否有效?如果它正在调用同时修改的类中的方法,那么您将遇到问题。
  3. 您最近是否对测试中使用的Call_Report__c或任何先决条件进行了验证(如机会):
    • 在字段定义中标记为必填的字段,
    • 缩短的文本字段大小,但您传递的字符串太长
    • 验证规则(不是Call_Report__c因为这些稍后会检查),而是机会等。
  4. 您能否system.debug()在测试中添加一些内容以确保您正在使用的 Opportunity 已创建正常。另外 - 有时开发人员过于以 VF 为中心,不会抛出异常,而是吞下它们并放置 VF 错误消息,所以也要检查一下ApexPages.hasMessages()
  5. (在那一点上越来越愚蠢的东西);)类和函数被标记为 isTest / testmethod?那是对象上唯一的触发器吗?如果还有更多before insert- 你不能保证订单,也许那里有什么问题?
  6. ...
于 2012-11-07T07:28:50.300 回答