2017-02-16 6 views
0

Я нахожусь в 71%, по какой-то причине в тест не может быть запущен 4 строки кода. Когда я тестирую себя в Salesforce, он работает (эти строки кода работают). Как я могу получить эти строки кода для запуска в тесте?salesforce Как достичь 75% теста apex

  1. Линии не работает, во втором цикле для NextID = Integer.valueOf (c.next_id__c);

  2. Линии не работают, в третьем для цикла btnRecord.next_id__c = newid + 1; btnRecord.last_id__c = newId;

    btnRecord.last_assigned_starting_id__c = nextId; 
        btnRecord.last_assigned_ending_id__c = newId; 
    

Ниже мой код:

trigger getNextId on tracking__c (before insert, before update) { 

Integer newId; 
Integer lastId; 
Integer nextId; 

newId=0; 
lastId=0; 
nextId =0; 



//add the total accounts to the last_id 
for (tracking__c bt: Trigger.new) { 

    //get the next id 
    List<tracking_next_id__c> btnxtid = [SELECT next_id__c FROM tracking_next_id__c]; 

    for (tracking_next_id__c c : btnxtid) 
    { 
     nextId=Integer.Valueof(c.next_id__c); 
    } 


    newId = Integer.Valueof(bt.total_account__c) + nextId; 

    bt.starting_id__c = nextId; 
    bt.ending_id__c = newId; 

    tracking_next_id__c[] nextIdToUpdate = [SELECT last_id__c, next_id__c, last_assigned_starting_id__c, last_assigned_ending_id__c FROM tracking_next_id__c]; 
    for(tracking_next_id__c btnRecord : nextIdToUpdate){ 

     btnRecord.next_id__c = newid + 1; 
     btnRecord.last_id__c = newId; 

     btnRecord.last_assigned_starting_id__c = nextId; 
     btnRecord.last_assigned_ending_id__c = newId; 

    } 

    update nextIdToUpdate ; 

    } 
    } 

ответ

0
@isTest 
private class getNextIdTest { 
     static testMethod void validateOnInsert(){ 
     tracking__c b = new tracking__c(total_account__c=Integer.Valueof(99)); 
     System.debug('before insert : ' + b.total_account__c); 
    insert b; 
    System.debug('after insert : ' + b.total_account__c); 
    List<tracking__c> customObjectList = 
 [SELECT total_account__c FROM tracking__c ]; 
    for(bid_tracking__c ont : customObjectList){ 
    ont.total_account__c = 5; 
    } 
    update customObjectList; 
    } 
    } 
2

Даже если охват тест увеличено с помощью seeAllData = true, не рекомендуется использовать seeAllData, пока и пока это действительно не будет uired. Пожалуйста, найдите блог here для деталей.

Другой способ увеличить охват - создать тестовые данные для объекта tracking_next_id__c.

@isTest 
    private class getNextIdTest { 
    static testMethod void validateOnInsert(){ 
     tracking_next_id__c c = new tracking_next_id__c(next_id__c='Your next_id', 
       last_id__c='Your last_id', last_assigned_starting_id__c='Your last_assigned_starting_id', 
       last_assigned_ending_id__c='last_assigned_ending_id'); 
     insert c; 
     tracking__c b = new tracking__c(total_account__c=Integer.Valueof(99)); 
     System.debug('before insert : ' + b.total_account__c); 
     insert b; 
     System.debug('after insert : ' + b.total_account__c); 
     List<tracking__c> customObjectList = 
     [SELECT total_account__c FROM tracking__c ]; 
     for(bid_tracking__c ont : customObjectList){ 
      ont.total_account__c = 5; 
     } 
     update customObjectList; 
    } 
} 

Я добавил ниже линий так, что, когда 2 запросов получить выполняются до FOR петель (, которые не были охвачены ранее) он будет получать данные, как мы вставили его в тестовом классе в настоящее время.

tracking_next_id__c c = new tracking_next_id__c(next_id__c='Your next_id', 
      last_id__c='Your last_id', last_assigned_starting_id__c='Your last_assigned_starting_id', 
      last_assigned_ending_id__c='last_assigned_ending_id'); 
    insert c; 

просто наблюдение, то лучше всего, чтобы избежать SOQL запроса в цикле FOR, чтобы избежать выполнения Exception (101: Слишком много SOQL запрос)

 Смежные вопросы

  • Нет связанных вопросов^_^