为触发器编写单元测试

时间:2014-09-16 15:00:00

标签: unit-testing triggers salesforce

我需要为这段代码编写单元测试。我正在学习如何编写单元测试。我的理解是,我需要从外部开始,并为if语句工作。我在单元测试中到底想做什么?你将如何处理这项任务?对不起,我是一个完全的初学者。谢谢。

Trigger BuildComponentBI on Build_Component__c(before insert , before update) {
    if (Trigger.isBefore && (Trigger.isInsert || Trigger.isUpdate)) {
        //Double CompVer = 0;
        double q = 0;
        for (Build_Component__c C: Trigger.new) {
            if (C.Manual_Override__c == False){

                List<Effort_Matrix__c> em = Effort_Matrix__c.getall().values();

                q = c.Scale__c;
                For(Effort_Matrix__c e:em){
                    if(e.Component_Name__c == c.Type__c){
                        if(e.Phase__c == 'Build'){
                            c.Estimated_Build_Hours__c = e.OOM__c * q;
                        }
                        if(e.phase__c == 'Analysis'){
                                c.Estimated_Analysis_Hours__c = e.OOM__c * q;
                            }
                        if(e.phase__c == 'SIT'){
                                c.Estimated_SIT_Hours__c = e.OOM__c * q;
                            }
                        if(e.phase__c == 'Deployment'){
                                c.Estimated_Deployment_Hours__c = e.OOM__c * q;
                            }
                        if(e.phase__c == 'UAT'){
                                c.Estimated_UAT_Hours__c = e.OOM__c * q;
                            }
                        if(e.phase__c == 'Unit Test'){
                                c.Estimated_Unit_Test_Hours__c = e.OOM__c * q;
                            }
                        if(e.phase__c == 'Design'){
                                c.Estimated_Design_Hours__c = e.OOM__c * q;
                            }
                        else{}
                }
             }      
            }

        }

    }
}

1 个答案:

答案 0 :(得分:1)

您不直接测试触发器。 您需要做的是创建一个插入和更新触发器对象的单元测试(Build_Component__c)。

示例:

@isTest
private class BuildComponentTest {
    @isTest static void testManualOverrideFalseInsert() {
         Build_Component__c bc = new Build_Component__c();
         bc.Manual_Override__c = false;
         insert bc;
    }
}

当Manual_Override__c布尔值为false时,您将在此处测试插入方案。继续添加测试以涵盖if语句中的其他条件,直到获得100%的覆盖率。

尝试在专用的Salesforce SE上提问,您可以更快地获得答案。