2012-04-09 94 views
1

请人帮我写测试用例100%的代码覆盖率为顶点测试用例触发(插入之前,更新前)在顶点

以下触发
trigger ETicketAirlineUrlTrigger on E_Ticket__c (before insert, before update) { 

    for(E_Ticket__c etNew : Trigger.New) 
    { 
    if(etNew.Airline__c =='Virgin Australia') 
    { 
     etNew.Airlines_Url__c = '<a href="http://www.virginaustralia.com/Personal/Bookings/Managebookings/index.htm">Virgin Australia</a>'; 
    } 
    else if(etNew.Airline__c =='Virgin Atlantic') 
    { 
     etNew.Airlines_Url__c = '<a href="https://www.virgin-atlantic.com/en/us/manageyourflights/updatebooking/index.jsp">Virgin Atlantic</a>'; 
    } 
    else if(etNew.Airline__c =='Virgin America') 
    { 
     etNew.Airlines_Url__c = '<a href="http://www.virginamerica.com/view-itinerary.html">Virgin America</a>'; 
    } 
    else if(etNew.Airline__c =='US AIR') 
    { 
     etNew.Airlines_Url__c = '<a href="http://reservations.usairways.com/Default.aspx">US AIR</a>'; 
    } 
    else if(etNew.Airline__c =='United Airlines') 
    { 
     etNew.Airlines_Url__c = '<a href="http://www.united.com/page/genericpage/0,,52172,00.html?navSource=dropDown&linkTitle=itineraries">United Airlines</a>'; 
    } 
    else if(etNew.Airline__c =='Turkish Air') 
    { 
     etNew.Airlines_Url__c = '<a href="http://www4.thy.com/mybookings/reservations.tk?target=view&lang=en">Turkish Air</a>'; 
    } 
    else if(etNew.Airline__c =='Thai Air') 
    { 
     etNew.Airlines_Url__c = '<a href="http://www.thaiair.com/AWR_PREM/view-trip.jsp">Thai Air</a>'; 
    } 
    else if(etNew.Airline__c =='Swiss Airlines') 
    { 
     etNew.Airlines_Url__c = '<a href="http://www.swiss.com/web/EN/Pages/index.aspx?Country=US">Swiss Airlines</a>'; 
    } 
    else if(etNew.Airline__c =='Southwest Airlines') 
    { 
     etNew.Airlines_Url__c = '<a href="https://www.southwest.com/flight/lookup-air-reservation.html?int=GSUBNAV-AIR-RETRIEVE&forceNe...">Southwest Airlines</a>'; 
    } 
    else if(etNew.Airline__c =='South African') 
    { 
     etNew.Airlines_Url__c = '<a href="https://www.flysaa.com/Journeys/reservation/searchpnr.action?nameSpace=reservation">South African</a>'; 
    } 
    else if(etNew.Airline__c =='Singapore Airlines') 
    { 
     etNew.Airlines_Url__c = '<a href="https://www.singaporeair.com/manageBooking-flow.form?execution=e1s1">Singapore Airlines</a>'; 
    } 
    else if(etNew.Airline__c =='QATAR AIRWAYS') 
    { 
     etNew.Airlines_Url__c = '<a href="http://www.qatarairways.com/us/en/homepage.page">QATAR AIRWAYS</a>'; 
    } 
    else if(etNew.Airline__c =='Qantas Airlines') 
    { 
     etNew.Airlines_Url__c = '<a href="http://www.qantas.com.au/travel/airlines/your-booking/global/en">Qantas Airlines</a>'; 
    } 
    else if(etNew.Airline__c =='Malaysia') 
    { 
     etNew.Airlines_Url__c = '<a href="https://book.malaysiaairlines.com/itd/itd/lang/en/reservations">Malaysia</a>'; 
    } 
    else if(etNew.Airline__c =='Lufthansa') 
    { 
     etNew.Airlines_Url__c = '<a href="http://www.lufthansa.com/online/portal/lh/us/my_account/my_bookings">Lufthansa</a>'; 
    } 
    else if(etNew.Airline__c =='KLM - Royal Dutch Airlines') 
    { 
     etNew.Airlines_Url__c = '<a href="http://www.klm.com/travel/us_en/index.htm#tab=db_mmb">KLM - Royal Dutch Airlines</a>'; 
    } 
    else if(etNew.Airline__c =='Japan Air') 
    { 
     etNew.Airlines_Url__c = '<a href="http://www.5971.jal.co.jp/eng/SearchReservation.do">Japan Air</a>'; 
    } 
    else if(etNew.Airline__c =='Etihad Airlines') 
    { 
     etNew.Airlines_Url__c = '<a href="http://www.etihadairways.com/sites/etihad/_layouts/etihad/obe/RetrieveBooking.aspx">Etihad Airlines</a>'; 
    } 
    else if(etNew.Airline__c =='Emirates') 
    { 
     etNew.Airlines_Url__c = '<a href="https://fly.emirates.com/MYB/MMBLogin.aspx">Emirates</a>'; 
    } 
    else if(etNew.Airline__c =='Delta Airlines') 
    { 
     etNew.Airlines_Url__c = '<a href="http://www.delta.com/">Delta Airlines</a>'; 
    } 
    else if(etNew.Airline__c =='Copa Airlines') 
    { 
     etNew.Airlines_Url__c = '<a href="http://www.copaair.com/sites/US/EN/Pages/homepage.aspx">Copa Airlines</a>'; 
    } 
    else if(etNew.Airline__c =='Continental Airlines') 
    { 
     etNew.Airlines_Url__c = '<a href="http://www.continental.com/web/en-US/apps/reservation/default.aspx">Continental Airlines</a>'; 
    } 
    else if(etNew.Airline__c =='Cathay Pacific') 
    { 
     etNew.Airlines_Url__c = '<a href="http://www.cathaypacific.com/cpa/en_US/manageyourtrip/managemybooking?loginType=nonmember">Cathay Pacific</a>'; 
    } 
    else if(etNew.Airline__c =='British Airways') 
    { 
     etNew.Airlines_Url__c = '<a href="http://www.britishairways.com/travel/home/public/en_us">British Airways</a>'; 
    } 
    else if(etNew.Airline__c =='American Airlines') 
    { 
     etNew.Airlines_Url__c = '<a href="https://www.aa.com/reservation/findReservationAccess.do">American Airlines</a>'; 
    } 
    else if(etNew.Airline__c =='All Nippon') 
    { 
     etNew.Airlines_Url__c = '<a href="https://aswbe-i.ana.co.jp/p_per/sky_ip_per_jp/preReConfirmSearchPnr.do?CONNECTION_KIND=LAX&LA...">All Nippon</a>'; 
    } 
    else if(etNew.Airline__c =='Alitalia') 
    { 
     etNew.Airlines_Url__c = '<a href="http://www.alitalia.com/US_EN/home/index.aspx">Alitalia</a>'; 
    } 
    else if(etNew.Airline__c =='Alaska Airlines') 
    { 
     etNew.Airlines_Url__c = '<a href="https://www.alaskaair.com/booking/ssl/saved/ViewPnr.aspx">Alaska Airlines</a>'; 
    } 
    else if(etNew.Airline__c =='Air New Zealand') 
    { 
     etNew.Airlines_Url__c = '<a href="https://flightbookings.airnewzealand.com/isbook_en_US/review/initNewWebCheckIn.do?workflowAction=...">Air New Zealand</a>'; 
    } 
    else if(etNew.Airline__c =='Air France') 
    { 
     etNew.Airlines_Url__c = '<a href="https://www.airfrance.us/cgi-bin/AF/US/en/local/process/standard/rebooking/SearchPnrRbkAction.do?">Air France</a>'; 
    } 
    else if(etNew.Airline__c =='Air Canada') 
    { 
     etNew.Airlines_Url__c = '<a href="http://www.aircanada.com/aco/manageMyBookings.do">Air Canada</a>'; 
    } 
    } 
} 

而且不能够得到100%的代码覆盖率使用下面的测试案例

@isTest 
private class ETicketAirlineUrlTestCase { 

static testMethod void myUnitTest() { 
    Opportunity oppNew = new Opportunity(); 
    oppNew.Name = 'Test Opp'; 
    oppNew.StageName = 'To Be Searched'; 
    oppNew.CloseDate = System.now().date(); 
    insert oppNew; 

    E_Ticket__c et = new E_Ticket__c(); 
    et.Airline__c = 'Virgin Australia'; 
    et.Opportunity__c = oppNew.Id; 
    et.Airline__c = 'Virgin Atlantic'; 
    insert et; 

    E_Ticket__c etNew = [select Id, Airline__c from E_Ticket__c where Id = :et.Id]; 
    update etNew; 
} 
} 

当我运行类 - > Force.com - >运行测试显示它100%的代码覆盖率

但是当我做Force.com - >部署到服务器它显示错误6%覆盖

任何帮助,将不胜感激

谢谢..

+0

这是一个重复的:http://stackoverflow.com/questions/10073987/test-case-for-the-rigger-in-apex – 2012-04-09 13:41:48

+0

嗨Anil,请在尝试自己写代码之前请他人去做为你的所有工作。社区更有可能帮助解决特定问题(遇到的错误等)或特定任务的最佳实践。这个问题被低估,因为正如它在向下投票箭头时所说的那样“这个问题没有显示任何研究工作......”。 – 2012-04-09 13:48:54

+0

@Matthew我写触发器的测试用例,但没有得到100%的代码覆盖率后糊涂所以这就是为什么我要求任何帮助... – 2012-04-09 13:54:10

回答

3

试试这个:

@isTest 
private class ETicketAirlineUrlTestCase { 

    static testMethod void myUnitTest() { 
     Opportunity oppNew = new Opportunity(); 
     oppNew.Name = 'Test Opp'; 
     oppNew.StageName = 'To Be Searched'; 
     oppNew.CloseDate = System.now().date(); 
     insert oppNew; 

     List<E_Ticket__c> tickets = new List<E_Ticket__c>(); 

     E_Ticket__c et1 = new E_Ticket__c(); 
     et1.Airline__c = 'Virgin Australia'; 
     et1.Opportunity__c = oppNew.Id; 
     tickets.add(et1); 

     E_Ticket__c et2 = new E_Ticket__c(); 
     et2.Airline__c = 'Virgin Atlantic'; 
     et2.Opportunity__c = oppNew.Id; 
     tickets.add(et2); 

     // ... 
     // add as many tickets needed for all Airlines 
     // ... 

     insert tickets; 
     update tickets; 
    } 
} 

此外,确保定制的沙箱和部署/生产服务器两个对象匹配。

+0

谢谢很多@Matthew,请给我一些关于测试用例写作的技巧,我们是否需要覆盖测试用例中的所有其他条件? – 2012-04-10 04:14:59

+1

@AnilD编写测试类来确认并确定结果。不要让测试类具有100%的覆盖率。但测试类的主要原因是确认你在触发器/类中正在做的工作正常。如果你有其他陈述,那么我肯定会涵盖所有这些。 – Prady 2012-04-10 05:48:09

+0

普拉迪是对的;测试课程旨在确认您的触发器或课程是否正常工作。确保测试遍历所有代码并使用['System.assertEquals'](http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_testing_example.htm)确保一切正常。 – 2012-04-10 13:51:27

3

为了获得100%的代码覆盖率,你需要写一个测试对每个“否则,如果”语句。

您目前只有一个测试,对于一个“其他if”。

+0

谢谢@SuperNES,我明白了你的意思 – 2012-04-10 04:21:18