You need to sign in to do that
Don't have an account?
Bablu Kumar Pandit
How to Cover Execute Method In test class
Hii Every One My Test Class cover 75% covrrage But not coveer Execete Method Please help me
// Handler Class public class PardotIdsSyncBatch implements Schedulable,Database.Batchable<sObject>,Database.Stateful { String sObjectName = '' ; public PardotIdsSyncBatch(String sObjectName) { this.sObjectName = sObjectName ; } public void execute(SchedulableContext sc) { Database.executeBatch(new PardotIdsSyncBatch(sObjectName)) ; } public Database.QueryLocator start(Database.BatchableContext bc) { String query = 'select Id,pi__url__c,Pardot_Id__c from ' + sObjectName + ' where pi__url__c != null AND Pardot_Id__c = null' ; return Database.getQueryLocator(query) ; } public void execute(Database.BatchableContext bc, List<sObject> scope) { PardotIdsSync sync1 = new PardotIdsSync() ; sync1.isAsync = true ; sync1.sync(scope) ; } public void finish(Database.BatchableContext bc) { if(this.sObjectName == 'Contact') Database.executeBatch(new PardotIdsSyncBatch('Lead') ) ; else Database.executeBatch(new ActivitySyncBatch(0,null,0)); } } <========Test Classs=========> @isTest public class PardotIdsSyncBatchTest { static testMethod void TestData(){ String CRON_EXP = '0 0 0 15 3 ? *'; List<contact> lstcon = New List<Contact>(); String sobjectname ='contact'; Account objacc = New Account(); objacc.Name ='Test'; objacc.Type = 'Traveler'; insert objacc; contact objcon = New contact(); objcon.LastName = 'Data'; objcon.Type__c = 'Traveler'; objcon.pi__url__c = 'ww.google.com'; objcon.Pardot_Id__c = 'F003'; objcon.AccountId = objacc.Id; lstcon.add(objcon); test.startTest(); PardotIdsSyncBatch obj = New PardotIdsSyncBatch(sobjectname); Database.executeBatch(obj); String jobId = System.schedule('ScheduleApexClassTest', CRON_EXP, obj); CronTrigger ct = [SELECT Id, CronExpression, TimesTriggered, NextFireTime FROM CronTrigger WHERE id = :jobId]; System.assertEquals(CRON_EXP, ct.CronExpression); System.assertEquals(0, ct.TimesTriggered); test.stopTest(); } }
>> Execute method will be called only once.
>> If you have chained batch classes, create separate methods for each and every batch class.
>> Make sure the start method fetches the required to process in execute method.
Review below examples which can help you.
https://developer.salesforce.com/forums/?id=906F0000000MJbiIAG
https://salesforce.stackexchange.com/questions/57220/test-class-not-covering-the-execute-method
https://salesforce.stackexchange.com/questions/218157/test-class-isnot-covering-execute-method/218160
Hope above information was helpful.
Please mark as Best Answer so that it can help others in the future.
Thanks,
Vinay Kumar