You need to sign in to do that
Don't have an account?
Unable to execute Test Method
Hi,
I am trying to write test method form a class but having issue. Although I have given correct values the coverage is upto 40 % only. I dont know what is the problem. Please help.
public class DetailTrainingPlanController {
Public String message = System.currentPagereference().getParameters().get('msg');
public DetailTrainingPlanController(editTrainingPlan controller) {
}
public String message{get;set;}
public double totalHours{get;set;}
public List<Training_Plan__c> TP{get;set;}
public List<Submodule__c> moduleHour{get;set;}
public Map<String, List<Submodule__c>> moduleMap {get;set;}
public Map<String, double> hourMap {get;set;}
public List<Submodule__c> submoduleList{get;set;}
public List<String> submoduleNamesList{get;set;}
public List<Module__c> moduleList;
public List<double> hourlist{get;set;}
Integer flag{get;set;}
public DetailTrainingPlanController(){
moduleMap = new Map<String, List<Submodule__c>>();
TP=new List<Training_Plan__c>();
TP=Database.Query('select Selected_hours__c from Training_Plan__c where Name__c=:message');
totalHours=0;
}
public PageReference back(){
return new PageReference('/apex/CRUDTrainingPlan');
}
public void populatedata(){
try{
List<Training_Plan__c> trainingPlanList=new List<Training_Plan__c>();
trainingPlanList=Database.query('Select unselected__c from Training_Plan__c where Name=:message');
String submoduleNames=trainingPlanList[0].unselected__c;
submoduleNamesList= new List<String>();
if(submoduleNames!=null)
submoduleNamesList=submoduleNames.split('/',100);
flag=0;
submoduleList=Database.query('Select selected__c,name from Submodule__c');
for(Integer i=0;i<submoduleList.size();i++)
{
flag=0;
for(Integer j=0;j<submoduleNamesList.size();j++)
{
if(submoduleList[i].name==submoduleNamesList[j])
{
flag=1;
}
}
if(flag==0)
{
submoduleList[i].selected__c=true;
}
else
submoduleList[i].selected__c=false;
upsert submoduleList;
}
upsert submoduleList;
hourlist=new List<Double>();
hourmap=new map<String,Double>();
Double hours=0;
List<Module__c> lst=new List<Module__c>();
lst=Database.query('select Name,name__c from Module__c');
for(Integer i=0;i<lst.size();i++)
{
hours=0;
String mname=lst[i].name;
List<Submodule__c> sub=new List<Submodule__c>();
sub=Database.query('select Name,Hours__c,selected__c from Submodule__c where Module__r.name=:mname');
for(Integer j=0;j<sub.size();j++)
{
if(sub[j].selected__c==true)
{
hours=hours+Double.valueof(sub[j].Hours__c);
}
}
hourlist.add(hours);
hourmap.put(lst[i].name__c,hours);
totalHours=totalHours+hours;
}
}
catch(Exception e){}
}
public static TestMethod void checkTrainingPlan()
{
Training_Plan__c tp=new Training_Plan__c();
tp.Name__c='Abc';
tp.Selected_hours__c=Double.valueOf('10');
tp.Unselected__c='SM-00001/SM-00002/SM-00003/SM-00005/';
insert tp;
PageReference pageref = Page.DetailTrainingPlan;
pageref.getParameters().put('msg',tp.Name);// msg is not setting
Test.setCurrentPage(pageref);
DetailTrainingPlanController dtpc=new DetailTrainingPlanController();
System.debug('Msg is '+dtpc.message+'EEEEEEEEEEE');
dtpc.populateData();
}
public static TestMethod void testGetPopulate()
{
// Tried This as well but msg value is not set in class..
PageReference pageref = Page.DetailTrainingPlan;
pageref.getParameters().put('msg','TP-0074');
Test.setCurrentPage(pageref);
DetailTrainingPlanController dtpc=new DetailTrainingPlanController();
dtpc.populateData();
}
}
Thank you.
Hi
Try This
I think u ised here 2 constructors one default adn another is parameterised constructors
public static TestMethod void checkTrainingPlan()
{
Training_Plan__c tp=new Training_Plan__c();
tp.Name__c='Abc';
tp.Selected_hours__c=Double.valueOf('10');
tp.Unselected__c='SM-00001/SM-00002/SM-00003/SM-00
005/';
insert tp;
here insert the Submodule__c,Module__c,according to ur if condition
PageReference pageref = Page.DetailTrainingPlan;
pageref.getParameters().put('msg',tp.Name);// msg is not setting
Test.setCurrentPage(pageref);
editTrainingPlan plan1;
DetailTrainingPlanController dtpc=new DetailTrainingPlanController(plan1);
DetailTrainingPlanController dtpc1=new DetailTrainingPlanController
System.debug('Msg is '+dtpc.message+'EEEEEEEEEEE');
dtpc.populateData();
dtpc1.populateData();
Here u have to pass the other methods through this object
}
Regards,
Rajesh.
Hi,
Thank you for your guidance.I have tried it but although i have done
PageReference pageref = Page.DetailTrainingPlan;
pageref.getParameters().put('msg',tp.Name);
Test.setCurrentPage(pageref);
still 'msg' message value is not setting value, Plese help
public void populatedata(){
try{
List<Training_Plan__c> trainingPlanList=new List<Training_Plan__c>();
trainingPlanList=Database.query('Select unselected__c from Training_Plan__c where Name=:message'); //Still Problem persist here.
String submoduleNames=trainingPlanList[0].unselected__c;
submoduleNamesList= new List<String>();
if(submoduleNames!=null)
submoduleNamesList=submoduleNames.split('/',100);
flag=0;
submoduleList=Database.query('Select selected__c,name from Submodule__c');
for(Integer i=0;i<submoduleList.size();i++)
{
flag=0;
for(Integer j=0;j<submoduleNamesList.size();j++)
{
if(submoduleList[i].name==submoduleNamesList[j])
{
flag=1;
}
}
if(flag==0)
{
submoduleList[i].selected__c=true;
}
else
submoduleList[i].selected__c=false;
upsert submoduleList;
}
upsert submoduleList;
hourlist=new List<Double>();
hourmap=new map<String,Double>();
Double hours=0;
List<Module__c> lst=new List<Module__c>();
lst=Database.query('select Name,name__c from Module__c');
for(Integer i=0;i<lst.size();i++)
{
hours=0;
String mname=lst[i].name;
List<Submodule__c> sub=new List<Submodule__c>();
sub=Database.query('select Name,Hours__c,selected__c from Submodule__c where Module__r.name=:mname');
for(Integer j=0;j<sub.size();j++)
{
if(sub[j].selected__c==true)
{
hours=hours+Double.valueof(sub[j].Hours__c);
}
}
hourlist.add(hours);
hourmap.put(lst[i].name__c,hours);
totalHours=totalHours+hours;
}
}
catch(Exception e){}
}
Thank you.
Amol Dixit.
Hi
See this link:
http://www.forcetree.com/2009/06/passing-parameters-to-visualforce-page.html
Hope this will help.
Regards,
Rajesh.
Test.setCurrentPageReference(new PageReference('Page.YOUR PAGE NAME'));
System.currentPageReference().getParameters().put('MSG', 'MY MESSAGE');
I am using above so its tested and functional