Skip to main content
I have the following Batch Job and corresponding test class

Batch Job:

global class WBStrategyBatch implements Database.Batchable<sObject>{

    public String query;

    public static final String QUERY_STRING = 'Select Id, Name, Market_Value_Total__c, (select Id, Name, Market_Value_for_Strategy_Total__c from WB_Accounts__r where Account_Status__c=\'Active\') from WB_Strategy__c where Id IN (Select Strategy__c from WB_Account__c)';

    

    global database.querylocator start(Database.BatchableContext BC)

  {

      return Database.getQueryLocator(query);

  }

  

  global void execute(Database.BatchableContext BC, List<sObject> scope)

  {

    decimal totalMarketValue=0;

    

    for (sObject obj: scope){

      totalMarketValue = 0;

      WB_Strategy__c wbStrategy = (WB_Strategy__c)obj;

      for (WB_Account__c wbAcc: wbStrategy.WB_Accounts__r){

        totalMarketValue = totalMarketValue + wbAcc.Market_Value_for_Strategy_Total__c;

      }

      wbStrategy.Market_Value_Total__c = totalMarketValue;

      update wbStrategy;

    }

      

  }

  

    global void finish(Database.BatchableContext BC)

  {

    System.debug('WB Strategy Groups Batch finished.');

  }

  

}

Test Class:

@isTest

private class WBStrategyBatchTest {

    public static testMethod void testWBStrategy(){

   

    String query = 'Select Id, Name, Market_Value_Total__c, (select Id, Name, Market_Value_for_Strategy_Total__c from WB_Accounts__r where Account_Status__c=\'Active\') from WB_Strategy__c where Id IN (Select Strategy__c from WB_Account__c) LIMIT 2';

   

     WB_Strategy__c[] wbStrgy = new List<WB_Strategy__c>();

    

           WB_Strategy__c wb1 = new WB_Strategy__c(Name='WBStrategy', Market_Value_Total__c=100);  

              

           wbStrgy.add(wb1);

    

     insert wbStrgy;

    

     Test.startTest();

     WBStrategyBatch wb = new WBStrategyBatch();

      Database.executeBatch(wb);

    

     Test.stopTest();

  } 

                     

}

While running the test class I am receiving the following error

System.NullPointerException: Argument 1 cannot be null

Please help

 
1 answer
  1. Dec 27, 2016, 11:55 PM

    Update your test class like below

    @isTest

    private class WBStrategyBatchTest

    {

    public static testMethod void testWBStrategy()

    {

    WB_Strategy__c wb1 = new WB_Strategy__c(Name='WBStrategy', Market_Value_Total__c=100);

    // add all required field

    insert wb1;

    WB_Account__c obj = new WB_Account__c();

    // add all required field

    obj.Strategy__c = wb1.id;

    insert obj;

    Test.startTest();

    WBStrategyBatch wb = new WBStrategyBatch();

    Database.executeBatch(wb);

    Test.stopTest();

    }

    }

    If you will get any issue please post with screen shot

     
0/9000