function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Pranav_VaidyaPranav_Vaidya 

Urgent - Testing nested class

Hi,

 

I have a nested class like below. How do I write test script which covers the sub class.

I can't increase the overall test % without adding tests for these 2 sub classes.

 

Thanks.

 

 

 

public class Trips{                   

  Private List <MonthlyTrip> lstJanTrips=new List <MonthlyTrip>();
  Private List <MonthlyTripArray> lstAllTrips=new List <MonthlyTripArray>();


  
//Constructor of the class
  Public Trips(){
  }

//Create All Trips array   
  Public List <MonthlyTripArray> getAllTrips(){
    String stOldCity='';
    String stJanAnalysts='';
    String stFebAnalysts='';
    String stMarAnalysts='';
    String stAprAnalysts='';
   
          MonthlyTripArray ObjAllMonthlyTrip=new MonthlyTripArray (stOldCity,StJanAnalysts,StFebAnalysts,StMarAnalysts,StAprAnalysts);
          lstAllTrips.Add (ObjAllMonthlyTrip);                    
            return lstAllTrips;  
}
//****************************************************

//Create Trips in Jan list  
  Public List <MonthlyTrip> getJanTrips(){
    String stOldCity='';
    String stAnalysts='';
    
           MonthlyTrip ObjMonthlyTrip=new MonthlyTrip(stOldCity, StAnalysts);
           lstJanTrips.Add (ObjMonthlyTrip);
  return lstJanTrips;  
}

//*********** First sub class *****************************
  Class MonthlyTripArray{
    Public String CityName{get; set;}
    Public String JanAnalysts{get; set;}
    Public String FebAnalysts{get; set;}
    Public String MarAnalysts{get; set;}
    Public String AprAnalysts{get; set;}


    Public MonthlyTripArray(String Cn, String JAn, String FAn,String MAn, String AAn){
      CityName = Cn;
      JanAnalysts=JAn;
      FebAnalysts=FAn;
      MarAnalysts=MAn;
      AprAnalysts=AAn;      
    }     
  }
//*********** Second sub class *****************************
  Class MonthlyTrip{
    Public String CityName{get; set;}
    Public String Analysts{get; set;}
    
    Public MonthlyTrip(String Cn, String An){
      CityName = Cn;
      Analysts=An;      
    }      
  } 
   
}

Best Answer chosen by Admin (Salesforce Developers) 
Navatar_DbSupNavatar_DbSup

Hi,


Try the below code for class as well as test method with 100% coverage:
public class Trips{
Private List <MonthlyTrip> lstJanTrips=new List <MonthlyTrip>();
Private List <MonthlyTripArray> lstAllTrips=new List <MonthlyTripArray>();



//Constructor of the class
Public Trips(){
}
//Create All Trips array
Public List <MonthlyTripArray> getAllTrips(){
String stOldCity='';
String stJanAnalysts='';
String stFebAnalysts='';
String stMarAnalysts='';
String stAprAnalysts='';

MonthlyTripArray ObjAllMonthlyTrip=new MonthlyTripArray (stOldCity,StJanAnalysts,StFebAnalysts,StMarAnalysts,StAprAnalysts);
lstAllTrips.Add (ObjAllMonthlyTrip);
return lstAllTrips;
}
//****************************************************

//Create Trips in Jan list
Public List <MonthlyTrip> getJanTrips(){
String stOldCity='';
String stAnalysts='';

MonthlyTrip ObjMonthlyTrip=new MonthlyTrip(stOldCity, StAnalysts);
lstJanTrips.Add (ObjMonthlyTrip);
return lstJanTrips;
}

//*********** First sub class *****************************
Class MonthlyTripArray{
Public String CityName{get; set;}
Public String JanAnalysts{get; set;}
Public String FebAnalysts{get; set;}
Public String MarAnalysts{get; set;}
Public String AprAnalysts{get; set;}


Public MonthlyTripArray(String Cn, String JAn, String FAn,String MAn, String AAn){
CityName = Cn;
JanAnalysts=JAn;
FebAnalysts=FAn;
MarAnalysts=MAn;
AprAnalysts=AAn;
}
}
//*********** Second sub class *****************************
Class MonthlyTrip{
Public String CityName{get; set;}
Public String Analysts{get; set;}

Public MonthlyTrip(String Cn, String An){
CityName = Cn;
Analysts=An;
}
}
public static testMethod void TestCode()
{
Trips t=new Trips();
t.getAllTrips();
t.getJanTrips();
}

}

All Answers

Starz26Starz26

call

 

getAllTrips()

 

and

 

getJanTrips()

 

in your test method.

 

i.e.  trips t = New trips();

 

t.getAlltrips();

 

Of course this assumes there are records present...remember in api 24 you have to create them or use seeAllData=true

Pranav_VaidyaPranav_Vaidya

Thanks for the suggestion.

 

I have already have  these lines in my test class. My issue here is that the test % of this class is around 40% and the nested classes are marked RED.

 

How do I turn these RED to BLUE, I mean test success.

 

Thanks.

Navatar_DbSupNavatar_DbSup

Hi,


Try the below code for class as well as test method with 100% coverage:
public class Trips{
Private List <MonthlyTrip> lstJanTrips=new List <MonthlyTrip>();
Private List <MonthlyTripArray> lstAllTrips=new List <MonthlyTripArray>();



//Constructor of the class
Public Trips(){
}
//Create All Trips array
Public List <MonthlyTripArray> getAllTrips(){
String stOldCity='';
String stJanAnalysts='';
String stFebAnalysts='';
String stMarAnalysts='';
String stAprAnalysts='';

MonthlyTripArray ObjAllMonthlyTrip=new MonthlyTripArray (stOldCity,StJanAnalysts,StFebAnalysts,StMarAnalysts,StAprAnalysts);
lstAllTrips.Add (ObjAllMonthlyTrip);
return lstAllTrips;
}
//****************************************************

//Create Trips in Jan list
Public List <MonthlyTrip> getJanTrips(){
String stOldCity='';
String stAnalysts='';

MonthlyTrip ObjMonthlyTrip=new MonthlyTrip(stOldCity, StAnalysts);
lstJanTrips.Add (ObjMonthlyTrip);
return lstJanTrips;
}

//*********** First sub class *****************************
Class MonthlyTripArray{
Public String CityName{get; set;}
Public String JanAnalysts{get; set;}
Public String FebAnalysts{get; set;}
Public String MarAnalysts{get; set;}
Public String AprAnalysts{get; set;}


Public MonthlyTripArray(String Cn, String JAn, String FAn,String MAn, String AAn){
CityName = Cn;
JanAnalysts=JAn;
FebAnalysts=FAn;
MarAnalysts=MAn;
AprAnalysts=AAn;
}
}
//*********** Second sub class *****************************
Class MonthlyTrip{
Public String CityName{get; set;}
Public String Analysts{get; set;}

Public MonthlyTrip(String Cn, String An){
CityName = Cn;
Analysts=An;
}
}
public static testMethod void TestCode()
{
Trips t=new Trips();
t.getAllTrips();
t.getJanTrips();
}

}

This was selected as the best answer
Pranav_VaidyaPranav_Vaidya

Thanks for the code.

 

I had it all there except one important thing,...I had written a separate test class and was trying to call methods from this class. When I moved my test functions inside the main class...everything worked like a charm!!

 

Thanks again.