Salesforce:CallReport触发器未触发 - 测试失败

时间:2012-11-07 06:06:31

标签: triggers salesforce apex-code

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

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

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

触发测试:

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)

谢谢!

1 个答案:

答案 0 :(得分:0)

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

一些提示:

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