2012-04-06 21 views
2

我有下面的類來發送電子郵件頂點測試用例電子郵件類

global class SendConfirmation { 

public SendConfirmation(ApexPages.StandardController controller) 
{ 
} 

Webservice static void SendEmail(string contactId,string oppId) 
{ 
    Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage(); 
    mail.setTargetObjectId(contactId); 
    mail.setWhatId(oppId); 
    mail.setTemplateId('00Xd0000000PFaY'); 
    Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail }); 
} 
} 

ablove類是精細

,但沒能得到下面的測試情況下完成的代碼覆蓋率在Eclipse

@isTest 
private class SendConfirmationTestCase { 
private static testMethod void myUnitTest() { 
    Contact con = new Contact(); 
    con.FirstName = 'Anil'; 
    con.LastName = 'Dutt'; 
    con.Email = '[email protected]'; 
    insert con; 


    Opportunity oppNew = new Opportunity(); 
    oppNew.Name = 'Test Opp'; 
    oppNew.StageName = 'Ticketing'; 
    oppNew.CloseDate = System.now().date(); 
    insert oppNew; 


    //ApexPages.StandardController sc = new ApexPages.StandardController(con); 
    //SendConfirmation sc1=new SendConfirmation (sc); 
    //sc1.SendEmail(); 
} 
} 

如果我註釋掉測試用例的最後3行

以下錯誤即將到來

SendConfirmationTestCase:無效類型:SendConfirmation

預先感謝您的幫助..

回答

4

試試這個,這是100%,我的測試。

global class SendConfirmation 
{ 
    public SendConfirmation(ApexPages.StandardController controller) 
    { 
    } 

    Webservice static void SendEmail(string contactId,string oppId) 
    { 
     Messaging.SingleEmailMessage mail 
      = new Messaging.SingleEmailMessage(); 
     mail.setTargetObjectId(contactId); 
     mail.setWhatId(oppId); 
     // assuming this Template ID exists in your org 
     mail.setTemplateId('00Xd0000000PFaY'); 
     Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail }); 
    } 

    private static testMethod void myUnitTest() 
    { 
     Contact con = new Contact(); 
     con.FirstName = 'Anil'; 
     con.LastName = 'Dutt'; 
     con.Email = '[email protected]'; 
     insert con; 

     Opportunity oppNew = new Opportunity(); 
     oppNew.Name = 'Test Opp'; 
     oppNew.StageName = 'Ticketing'; 
     oppNew.CloseDate = System.now().date(); 
     insert oppNew; 

     ApexPages.StandardController sc 
      = new ApexPages.StandardController(con); 
     SendConfirmation sc1=new SendConfirmation (sc); // test constructor 

     // Not: sc1.SendEmail(); 
     // Because method is a webservice in a global class 
     SendConfirmation.SendEmail(con.Id,oppNew.Id); 
    } 
} 
+0

非常感謝@matthew ...可能你的觀點也是對的,但靜態方法總是用類名調用。所以我使用類名稱SendConfirmationEmail來調用SendEmail方法。 SendEmail(con.id,oppNew.id);而不是調用類的實例。 – 2012-04-09 07:13:49